<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">

	<channel>
		<title>Magazine - herramientas-imprescindibles-para-desarrolladores</title>
		<link>http://www.genbetadev.com</link>
		<description>
Información sobre el sector de los desarrolladores, el desarrollo de aplicaciones, para móviles, desarrollo web, bases de datos, frameworks y lenguajes de programación		</description>
		<pubDate>2013-05-21 01:39:42</pubDate>

		<generator>http://www.genbetadev.com</generator>
                    <item>
      <title><![CDATA[Herramientas imprescindibles para un desarrollador de Python ]]></title>
      <link>http://www.genbetadev.com/herramientas/herramientas-imprescindibles-para-un-desarrollador-de-python</link>
      <guid>http://www.genbetadev.com/herramientas/herramientas-imprescindibles-para-un-desarrollador-de-python</guid>
      <pubDate>Mon, 30 May 2011 03:52:36 +0000</pubDate>

      <author>Nacho Rodríguez</author>
      <description><![CDATA[
      <p><img id="image76626" src="http://img.genbetadev.com/2011/05/herramientas.gif" class="centro_sinmarco" alt="Herramientas esenciales para programar en Python" /></p>

	<p>En nuestra serie de herramientas para programadores es el turno esta vez del lenguaje de <em>Guido Van Rossum</em>. Es bastante difícil elegir las mejores en ciertos apartados, ya que muchas veces depende de nuestra forma de trabajar y las costumbres o exigencias en los proyectos, así que <strong>si encontráis que falta alguna herramienta importante podéis comentarlo</strong> para que nos sirva a todos. Las utilidades seleccionadas abarcan desde el desarrollo estándar hasta el orientado a frameworks y entornos web.</p>

	<p><!--more--></p>

<h2>El intérprete: Python</h2>

	<p>Es la más esencial, y aunque sea de &#8220;perogrullo&#8221; hay que nombrarla. Aunque casi todo el mundo suele tirar con la versión <strong>CPython</strong>, hay otras versiones igualmente interesantes como IronPython (que funciona bajo .NET/Mono y Silverlight/Moonlight), Jython (lo hace en la máquina virtual de Java) o Pypy (Python dentro de Python, explicado perfectamente por su logo de la serpiente que se muerde la cola).<br />
Los podremos encontrar aquí: <a href="http://http://www.python.org/download/">Página de descargas de Python.org</a></p>

<h2>Easy Install, nuestro gestor de paquetes</h2>

	<p><strong>Easy Install</strong> es a Python lo que &#8220;emerge&#8221; a Gentoo. Easy Install es un script que se encarga de indexar, instalar, compilar, desinstalar y actualizar de forma sencilla, segura y homogenea todos los paquetes y librerías que queramos integrar en nuestra instalación de Python. Tiene un funcionamiento muy completo e <strong>incluso te permite elegir la versión exacta que quieres instalar</strong>, por si tienes problemas de dependencias. Easy Install forma parte del paquete &#8220;<strong>setuptools</strong>&#8220; y las instrucciones para instalarlo las podemos encontrar aquí: <a href="http://pypi.python.org/pypi/setuptools">Cómo instalar las setuptools</a>.</p>

<h2>Virtualenv, separando entornos</h2>

	<p>En Python es común que, por las propias características del mismo intérprete o alguno de sus productos (ej. Django), necesitemos distintas versiones de Python instaladas, con distintas librerías y diferentes configuraciones. Para este cometido disponemos de <a href="http://www.virtualenv.org/en/latest/">Virtualenv</a>, que <strong>es capaz de crear entornos virtuales para ejecutar nuestros programas</strong>. Estos entornos están completamente aislados y son independientes, de forma que ninguna librería, incluso globales del sistema, nos va a estropear nada si no queremos. Como ya supongo que todos tenemos &#8220;Easy Install&#8221;, la instalación es tan simple como ejecutar en la línea de comandos esto:<br />
<code>$ easy_install virtualenv==dev.</code></p>

<h2>Para picar (código)</h2>

	<p>En este apartado me ha resultado imposible decantarme por un solo <span class="caps">IDE</span>, por lo que os pongo los 3 que más me gustan:<br />
<ul>
	<li><strong>Eric IDE</strong> (<a href="http://eric-ide.python-projects.org/">web</a>): Este <span class="caps">IDE</span> está programado en Python e incluye debugger, integración con control de versiones, plugins,etc. Si te gustan los editores modernos, con autocompletado, estilo Eclipse, este es tu opción. Por cierto, Eclipse también incluye un plugin para Python.</li>
	<li><strong>gEdit</strong> (<a href="http://projects.gnome.org/gedit/">web</a>), el editor polivalente: Aunque su versión &#8220;pata negra&#8221; es la de Linux está también disponible para varias plataformas, en las que se echa en falta su integración con Gnome. gEdit dispone de todas las características necesarias en un editor actual, incluso le hace sombra al famoso Textmate de MacOS, que sería su competidor más directo.</li>
	<li><strong>Vi+pyflakes</strong> (<a href="http://www.vim.org/scripts/script.php?script_id=2441">web</a>): El Panzer de la división, todoterreno y con una gran curva de aprendizaje si no conoces el editor, pero una herramienta potentísima una vez se aprende.</li><br />
</ul></p>

	<p>También disponemos de <span class="caps">IDLE</span>, el que trae el propio Python (que no me termina de convencer) y del que uso normalmente estando en consola: <a href="http://joe-editor.sourceforge.net/">Joe&#8217;s own editor</a>.</p>

<h2>Servidor para desarrollo web</h2>

	<p>Si vamos a desarrollar usando Django, por ejemplo, durante el propio desarrollo no vamos a necesitar nada más, pero en cuanto pasemos a producción no nos servirá el mini server que trae incorporado. En otros casos ni siquiera traen esta opción por lo que debemos montarnos el servidor, o servidores, necesarios. Lo normal es utilizar <a href="http://httpd.apache.org/">apache2</a> más el módulo <a href="http://code.google.com/p/modwsgi/">WSGI</a> para servir el contenido dinámico, y un segundo servidor, quizás con <a href="http://nginx.org/">nginx</a>, para servir todo lo estático. Aquí no tenemos fórmulas mágicas como en <span class="caps">PHP</span>, que sueltas todo en un directorio y fuera, las cosas son un pelín más complicadas.</p>

<h2>Generador de documentación</h2>

	<p>Los proyectos, aunque pongamos los medios, se documentan poco. Incluso, en la mayoría de los casos, el producto final no tiene mucho que ver con la documentación primigenia, y lo único que tenemos para documentar desde el punto de vista técnico es el código. Pues bien, si seguimos unos estándares en las definiciones de clases, funciones, etc. podremos aprovechar la potencia de herramientas como <a href="http://sphinx.pocoo.org/">Sphynx</a>, un <strong>generador de documentación muy potente</strong>, que nos ofrece la posibilidad de generar la <span class="caps">API</span> de nuestros desarrollos consultable en una aplicación <span class="caps">HTML</span>, <span class="caps">PDF</span>, LateX.</p>

<h2>Compilador a <span class="caps">EXE</span> para Windows</h2>

	<p>Por último comentar que existe sólo para Windows un &#8220;compilador&#8221; que <strong>convierte los programas hechos en Python en programas EXE</strong>. El artífice de esto se llama <a href="http://www.py2exe.org/">Py2exe</a> y consigue que podamos distribuir en plataformas Windows nuestro software sin preocuparnos de mucho más, ya que se encarga de proporcionar el intérprete y todas las dependencias que fuesen necesarias.</p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Herramientas imprescindibles para un desarrollador de .NET]]></title>
      <link>http://www.genbetadev.com/herramientas/herramientas-imprescindibles-para-un-desarrollador-de-net</link>
      <guid>http://www.genbetadev.com/herramientas/herramientas-imprescindibles-para-un-desarrollador-de-net</guid>
      <pubDate>Thu, 26 May 2011 12:43:45 +0000</pubDate>

      <author>Jose Miguel</author>
      <description><![CDATA[
      <p><img id="image76594" src="http://img.genbetadev.com/2011/05/dotnet4logo.jpg" class="centro_sinmarco" alt="dotnetlogo" /></p>

	<p>Turno para los<strong> desarrolladores .<span class="caps">NET</span> </strong>en el que respasaremos aquellas herramientas que deberian ser un must-have para cualquier desarrollador de la plataforma .<span class="caps">NET</span> de Microsoft.</p>

	<p>También hablaremos de herramientas multiplataforma tanto para Linux como MacOS para el desarrollo de aplicaciones .<span class="caps">NET</span>. Vayamos al grano.</p>

	<p><!--more--></p>

	<p><h2>IDE</h2><br />

En el apartado de <span class="caps">IDE</span> tenemos indiscutiblemente el que para muchos, yo incluido, es el mejor <span class="caps">IDE</span> del mercado: <strong>Visual Studio .NET</strong>. Actualmente en la versión 2010, tenemos a nuestra disposición las <a href="http://www.microsoft.com/express/Downloads/"><strong>ediciones Express</strong></a> que podemos descargar libremente en las versiones Visual C#, Visual Basic .<span class="caps">NET</span>, Windows Phone y Web Developer. </p>

	<p><img id="image76595" src="http://img.genbetadev.com/2011/05/vsnet_650.jpg" class="centro" alt="VS" /></p>

	<p>Otras de las herramientas que pese a que es de pago jamás faltará en mi entorno de desarrollo es <strong><a href="http://www.jetbrains.com/resharper/">Resharper</a></strong>, de Jetbrains. Conocí esta herramienta a recomendación de un compañero del programa <span class="caps">MVP</span> en Redmond en el año 2008, cuando entonces estaba la versión 4.0 para Visual Studio .<span class="caps">NET</span> 2008, y la verdad es que desde entonces no he instalado un Visual Studio .<span class="caps">NET</span> sin hacer lo propio con Resharper, acualmente en la versión 5.1 y con las primeras Betas del 6.0 con increíbles novedades.</p>

	<p>Otro addin interesante, también para Visual Studio .<span class="caps">NET</span> 2010, son las <a href="http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef">Visual Studio 2010 Productivity Power Tools</a>, las cuales ofrecen un conjunto de extensiones que ayudan a aumentar la productividad en tus desarrollos.</p>

	<p>En el apartado de <span class="caps">IDE</span> para Linux y MacOS encontramos <a href="http://monodevelop.com/">MonoDevelop</a>. En su última versión la 2.4, da soporte para  C# y otros lenguajes .<span class="caps">NET</span> como Nemerle, Boo, Java (vía <span class="caps">IKVM</span>.<span class="caps">NET</span>) y Python. MonoDevelop fue una adaptación de SharpDevelop para Gtk#.</p>

<h2>Clientes base de datos</h2>

	<p>Otros de los IDEs si estamos desarrollando con <span class="caps">SQL</span> Server, es el <strong><span class="caps">SQL</span> Server Management Studio</strong> el cual, igual que en Visual Studio, tenemos una versión <a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a-4b76a8564a2b&displaylang=en">Express </a>de libre descarga. Se trata de un <span class="caps">IDE</span> que ha evolucionado positivamente en las últimas versiones incorporando además del <strong>Intellisense</strong>, compatibilidad con el control de código fuentede Team Foundation Server.</p>

	<p><h2>Otros editores</h2><br />

Si es cierto que el famoso <strong>Notepad </strong>es un apoyo para el almacenamiento de información almacenada en el clipboard, le falta lo que <a href="http://notepad-plus-plus.org/">Notepad++</a> aporta, es decir una forma de manipular código de forma avanzada.</p>

	<p>Para los que usualmente utilizan <span class="caps">LINQ</span>, <a href="http://www.linqpad.net/">LINQPad </a>se ha convertido en una herramienta tremendamente útil a la hora de generar consultas contra todo tipo de proveedores <span class="caps">LINQ</span> la cual ofrece, además, la posibilidad de compilar código y ejecutar las consultas.</p>

	<p><img id="image76598" src="http://img.genbetadev.com/2011/05/linqpad_650.png" class="centro" alt="linqpad" /></p>

	<p><h2>Gestión ciclo de vida / código fuente</h2><br />

<strong>Visual Studio Team Foundation Server</strong> es sin duda el servidor de gestión del ciclo de vida de aplicaciones por excelencia para entornos .<span class="caps">NET</span>. Sin embargo, otras alternativas como <strong>Github </strong>también tiene su espacio.</p>

	<p><h2>Virtualización</h2><br />

En el apartado de virtualización, además del cliente de conexión remota que ofrece la plataforma Windows, me gustaria destacar a<a href="http://www.code4ward.net/main/"> Royal TS</a>, la cual ofrece una versión freeware limitada a 10 conexiones y que ofrece la posibilidad de mantener varias conexiones remotas al mismo tiempo.</p>

	<p><img id="image76599" src="http://img.genbetadev.com/2011/05/royal-ts-active-session-thumbnail.png" class="centro" alt="Royal TS Active Session Thumbnail.png" /></p>

	<p>Una de las características interesantes también es XP Mode de Windows 7 la cual te permite crear una imagen de un Windows XP en cuestion ideal para los test de despliegue, por ejemplo.</p>

	<p><h2>Diseño</h2><br />

Mitad <span class="caps">IDE</span> de desarrollo mitad software de diseño, <strong><a href="http://www.microsoft.com/expression/products/blend_overview.aspx">Microsoft Expression Blend</a></strong> es una herramienta obligatoria para todos aquellos que desarrollan para Silverlight o <span class="caps">WPF</span>, tanto para aplicaciones <span class="caps">RIA</span> como para Windows Phone. Cabe destacar la integración de proyectos con Visual Studio .<span class="caps">NET</span> lo cual hace de ambas herramientas un tandem altamente eficaz.</p>

	<p><img id="image76600" src="http://img.genbetadev.com/2011/05/sketchflow_full_screen_650.jpg" class="centro" alt="blend" /></p>

	<p><a href="http://instant-eyedropper.com/">Instant EyeDropper</a> es ampliamente utilizado por desarrolladores Web para la captura de colores en pantalla en formatos html, <span class="caps">HEX</span>, <span class="caps">RGB</span>, <span class="caps">HSB</span>. Hablando en esta linea tampoco debemos olvidar tanto a MS Paint como a Paint.<span class="caps">NET</span> para manipular imágenes de una forma sencilla si no necesitamos utilizar técnicas avanzadas de diseño y/o manipulación de imágenes, claro.</p>

	<p><h2>Web</h2><br />

De la misma forma que Expression Blend es un must-have para los desarrolladores de Silverlight, <a href="http://www.microsoft.com/expression/products/Web_Overview.aspx">Expression Web</a> lo es para los desarrolladores de Web ofreciendo un conjunto de funcionalidades orientadas específicamente a este entorno de desarrollo.</p>

	<p><img id="image76601" src="http://img.genbetadev.com/2011/05/expression-web_650.jpg" class="centro" alt="expression web" /></p>

	<p>Si lo que queremos es depurar aplicaciones Web, entonces <a href="http://www.fiddler2.com/fiddler2/">fiddler2</a>. Con esta herramienta podemos sacar un log de todas la peticiones http y https que se generan en nuestro equipo con un potente subsistema de scripting basado en eventos.</p>

	<p><h2>Otros</h2><br />

<strong>.<span class="caps">NET</span> Reflector</strong> ha sido considerado durante mucho tiempo el desensamblador por excelencia de binarios en .<span class="caps">NET</span> hasta que sus propietarios decidieron cambiar su licencia y pasar a ser de pago. Sin embargo, no ha pasado mucho tiempo hasta que Jetbrains ha lanzado su propia versión de una herramienta llamada <a href="http://www.jetbrains.com/decompiler/">dotPeek</a> que además se integra con otras del mismo fabricante como Resharper o dotTrace.</p>

	<p><img id="image76602" class="centro" alt="dotpeek" src="http://img.genbetadev.com/2011/05/dotpeek_at_a_glance_250.png" /></p>

	<p>Para los que hemos vivido <del>y sufrido</del> el infierno de las <span class="caps">DLL</span> en Visual Basic 6.0 alabamos en su momento a <strong>Mark Russinovich</strong> por desarrollar <a href="http://technet.microsoft.com/es-es/sysinternals/bb896653">Process Explorer </a>el cual nos ofrece toda la información de archivos <span class="caps">DLL</span>, librerias nativas y subprocesos que se ejecutan dentro de un mismo proceso. </p>

	<p><img id="image76596" src="http://img.genbetadev.com/2011/05/processexploreres-esmsdn10.jpg" class="centro" alt="process exp" /></p>

	<p><h2>Conclusión</h2><br />

Estoy convencido que me he dejado alguna que otra herramienta en el tintero y es que el uso de las mismas depende, en gran medida, al tipo de aplicaciones que solemos desarrollar (dispositivos móviles, Web, <span class="caps">RIA</span>, Desktop&#8230;) así que os animo a que hagáis llegar por comentario todas aquellas herramientas que no aparecen en este post y que por un motivo u otro deberían ocupa su lugar. Abriremos sección al respecto. ¡¡¡Muchas gracias!!!</p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Herramientas imprescindibles para un desarrollador PHP]]></title>
      <link>http://www.genbetadev.com/herramientas/herramientas-imprescindibles-para-un-desarrollador-php</link>
      <guid>http://www.genbetadev.com/herramientas/herramientas-imprescindibles-para-un-desarrollador-php</guid>
      <pubDate>Wed, 25 May 2011 09:22:39 +0000</pubDate>

      <author>Fernando Siles</author>
      <description><![CDATA[
      <p><img id="image76582" src="http://img.genbetadev.com/2011/05/aptana.jpg" class="centro" alt="Aptana" /></p>

	<p>Seguimos con nuestro repaso a las <strong>herramientas imprescindibles para los desarrolladores</strong> de distintos perfiles. Hoy les toca a los del perfil izquier&#8230; digo, a los desarrolladores <strong>PHP</strong>. Me voy a centrar en las que suelo usar (o he usado asiduamente) yo mismo aunque dando diferentes alternativas para que seáis vosotros los que os decantéis por la que más os convenga. ¡Empezamos!<!--more--></p>

<h2>IDE</h2>

	<p>El <strong>entorno de desarrollo</strong> es primordial y, por suerte, hay opciones muy buenas. El célebre Eclipse o Netbeans son dos de las más comunes entre las libres pero yo me quedo con <a href="http://www.aptana.com/">Aptana Studio</a>, que viene a ser como Eclipse (no en vano está basado en él) pero centrado en la realización de aplicaciones web, que es para lo que se utiliza <span class="caps">PHP</span> casi al 100%. Los plugins de Eclipse son compatibles con Aptana y resulta imprescindible <a href="http://www.eclipse.org/subversive/">Subversive</a> (para conectar con <span class="caps">SVN</span> de manera ultra-sencilla&#8230; ¡muere Tortoise!) además del gran <em>debuggeador</em> <a href="http://xdebug.org/">xdebug</a>, complemento de <span class="caps">PHP</span>.</p>

<h2>Gestión de proyectos</h2>

	<p>De las <strong>herramientas de gestión de proyectos</strong> y grupos  ya <a href="http://www.genbetadev.com/herramientas/ricas-y-nutritivas-herramientas-para-gestion-de-proyectos-y-grupos">hablamos hace poco</a> y de entre todas las reseñadas yo me decanto por <strong>Open Atrium</strong>: calendario, bug tracker, gestor documental y conexión a <span class="caps">SVN</span> entre otras muchas cosas. Debe usuarse en concordancia con un tablón de Kanban (si el grupo es pequeño) o de <strong>Scrum</strong> (si es más amplio).</p>

<h2>Cliente de base de datos</h2>

	<p>Lo normal al desarrollar en <span class="caps">PHP</span> es hacerlo contra una base de datos <strong>MySQL</strong>... y phpMyAdmin se suele quedar bastante corto. Una buena alternativa (si trabajamos en Windows) es <a href="http://www.heidisql.com/">HeidiSQL</a>: sencilla, potente, poco pesada y libre. En Linux, sin ser ninguna maravilla, <a href="http://wb.mysql.com/">MySQL Workbench</a> cumple.</p>

<h2>Depurador del lado del cliente</h2>

	<p><a href="https://addons.mozilla.org/es-es/firefox/addon/firebug/">Firebug</a> es uno de los tres mejores inventos de la humanidad (la rueda y el mojito son los otros dos) y punto. Si usas Chrome en vez de Firefox, el <strong>depurador integrado</strong> no está mal. Si usas Explorer&#8230; nada, si usas Explorer buscate la vida.</p>

<h2>Otras herramientas</h2>

	<p><a href="http://www.putty.org/">Putty</a> para las <strong>conexiones remotas</strong>, algún <strong>editor sencillo</strong> pero potente (<a href="http://notepad-plus-plus.org/">Notepad++</a> en Windows, Textmate en Mac, <a href="http://www.gedit.org/">Gedit</a> en Linux) para cambios rápidos, un <strong>cliente FTP</strong>, una <strong>pizarra</strong> bien grande para apuntar todo lo que se vaya pasando por la cabeza al equipo&#8230; y una máquina de <em>vending</em> bien surtida de <em>cocacolas</em>, patatas y chuches, claro.</p>

	<p>Esto es todo amigos, mañana seguimos con más herramientas para nuevos perfiles de desarrollador. ¡No te lo pierdas!</p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Herramientas imprescindibles para un desarrollador de Ruby on Rails]]></title>
      <link>http://www.genbetadev.com/ruby/herramientas-imprescindibles-para-un-desarrollador-de-ruby-on-rails</link>
      <guid>http://www.genbetadev.com/ruby/herramientas-imprescindibles-para-un-desarrollador-de-ruby-on-rails</guid>
      <pubDate>Tue, 24 May 2011 08:00:54 +0000</pubDate>

      <author>Carlos Paramio</author>
      <description><![CDATA[
      <p><img id="image76573" src="http://img.genbetadev.com/2011/05/herramientas-rails.jpg" class="centro_sinmarco" alt="Herramientas Rails" /></p>

<p>Seguimos con los especiales acerca de cuáles son las <strong>herramientas imprescindibles</strong> a la hora de embarcarte en un proyecto con tu lenguaje y/o framework preferido. En esta ocasión, os voy a describir las que yo considero más importantes para desarrollar aplicaciones en <strong>Ruby on Rails</strong>. Aunque estoy seguro que hay muchas otras que se os ocurren, así que os invito a que comentéis vuestras preferencias.</p>

	<p><!--more--></p>

<h2>El editor o IDE</h2>

<p>¿Usar un <strong>editor ligero</strong>, o un <strong>IDE</strong> que lo abarque todo? El eterno dilema. Yo la verdad es que soy de los que prefieren un editor más o menos sencillo, pero que sea fácilmente extensible a través de plugins. Mi elección ha sido desde hace mucho tiempo <strong>TextMate</strong>, un editor del que <a href="http://www.genbetadev.com/herramientas/editores-de-codigo-textmate-para-mac">ya os hablé en su día</a>.</p>

<p>No obstante, existen un buen número de IDEs para programar con Ruby on Rails que funcionan realmente bien, y que se pueden convertir fácilmente en tu centro de mando de todo el proyecto, gracias a su integración con sistemas de control de versiones, visor de base de datos, etc.</p>

<p>Uno de los IDEs más conocidos es <a href="http://www.jetbrains.com/ruby/">RubyMine</a>. Si bien no es gratuito (salvo que sea usado para proyectos de software libre), su precio no es descomunal, partiendo de <strong>58 euros</strong> la versión para un desarrollador individual. A cambio de este dinero, se nos ofrece un entorno con un editor que permite el autocompletado de código, herramientas de ayuda para la refactorización, análisis de código al vuelo, visor del esquema de los modelos, soporte para Bundler o <span class="caps">RVM</span>, depurador, soporte para diversos sistemas de control de versiones&#8230; En definitiva, toda una navaja suiza. Está disponible para Windows, Mac OS X y Linux.</p>

<p>El otro <span class="caps">IDE</span> popular para programar en Ruby es <a href="http://netbeans.org/features/ruby/index.html">NetBeans</a>, que aunque es más conocido como un entorno para Java, existen unos módulos oficiales que permiten utilizarlo para este otro lenguaje. De nuevo, nos ofrece herramientas de ayuda a la refactorización, inferencia de tipos, navegación rápida entre ficheros relacionados, parseo de código mientras se escribe para detectar errores de sintaxis, y un largo etcétera.</p>

<h2>El intérprete</h2>

<p>Lógicamente, necesitamos una versión del <strong>intérprete de Ruby</strong> para poder trabajar. En los proyectos nuevos, ya no tiene tanto sentido utilizar la versión 1.8.x del intérprete oficial, y lo recomendable suele ser trabajar directamente con la versión <strong>1.9.2</strong> del mismo. No obstante, además de los intérpretes oficiales, existen muchos otros igualmente válidos, algunos de los cuales bastante potentes, y siempre que las librerías y gems que vayamos a utilizar en nuestro proyecto sean compatibles con estos, no existe ninguna traba para usarlos.</p>

<p>El intérprete oficial (también llamado <strong>CRuby</strong>) se puede descargar en sus diferentes versiones desde <a href="http://www.ruby-lang.org/es/">la página oficial del lenguaje</a>, aunque si utilizas Linux seguramente te sea más fácil utilizar los paquetes que te proporcione tu distribución. Algunos de estos intérpretes alternativos a CRuby son: <a href="http://www.jruby.org/">JRuby</a>, <a href="http://rubini.us/">Rubinius</a>, <a href="http://www.rubyenterpriseedition.com/">Ruby Enterprise Edition</a>, y otros muchos que aún tienen algunos problemas de compatibilidad con librerías habituales.</p>

<p>Si tuviera que mencionar un favorito de entre los alternativos, ese sería <strong>JRuby</strong>, ya que no sólo su rendimiento es espectacular, sino que además permite la ejecución de aplicaciones Rails en entornos donde sólo tienen cabida servidores de aplicaciones en entornos Java como pudiera ser GlassFish. Esto permite que puedas colocar tu aplicación Rails en servidores de empresas que ya están siendo usados para servir otras aplicaciones escritas en Java sin tener que cambiar mucho el entorno del servidor.</p>

<p>Si además deseas poder trabajar con <strong>varios intérpretes simultáneamente</strong> desde tu máquina, te aconsejo que le eches un buen vistazo a <a href="https://rvm.beginrescueend.com/">Ruby Version Manager (<span class="caps">RVM</span>)</a>. Aunque tengo intención de dedicarle un artículo por separado en breve.</p>

<h2>Software de virtualización</h2>

<p>Aunque a menudo Rails se utiliza como backend web de ciertas aplicaciones, es más habitual que sea usado para programar una aplicación web completa, incluido el frontend. Y claro, cualquier aplicación web que se precie ha de <strong>probarse bien en diversos navegadores</strong>, no sólo el que tengas en tu máquina. Es por ello que el uso de un software de virtualización se vuelve imprescindible.</p>

<p>Yo trabajo con Mac, pero dado que he de probar el renderizado de las vistas en Internet Explorer, he de instalarme una <strong>máquina virtual</strong> para poder tener Windows en ella con este navegador, que no existe para otras plataformas. Es más, lo normal es tener más de una máquina virtual, cada una con una versión diferente del navegador, para realizar las pruebas con un entorno lo más fiel posible a aquel que utilizará el usuario. Si trabajas en Windows, necesitarás poder probarlo en Safari. Si trabajas en Linux, puede que necesites probar tu aplicación en los dos navegadores anteriormente mencionados. En definitiva, seguramente necesites un <strong>software de virtualización</strong>.</p>

<p>De entre los más famosos, se encuentra <a href="http://www.virtualbox.org/">VirtualBox</a> (que ahora pertenece a Oracle), el cual corre en todas las plataformas y es gratuito. Aunque también puedes usar <a href="http://www.parallels.com/es/">Parallels</a>, una de las opciones preferidas si trabajas con Mac, o <a href="http://www.vmware.com/es/">VMWare</a>, un clásico del mundo de la virtualización que no defrauda.</p>

<h2>ImageMagick</h2>

<p>Es muy habitual que tu aplicación web necesite poder <strong>manipular imágenes</strong> subidas por los usuarios. Y aquí la navaja suiza suele ser <a href="http://www.imagemagick.org/script/index.php">ImageMagick</a>, un software que permite hacer recortes, giros, redimensionados, adiciones de texto superpuesto, y decenas de otros efectos, a imágenes que estén en casi cualquier formato. Si bien lo normal es utilizar una gema de Ruby que facilite estas operaciones utilizando un <span class="caps">DSL</span> sencillo, estas gemas suelen luego traducir las especificaciones de tamaños y cambios de proporción que hayamos escrito en comandos que utilizan las herramientas <strong>ImageMagick</strong>. Así que es casi obligatorio tenerlas instaladas.</p>

<h2>Firebug</h2>

<p>Aunque he de decir que últimamente utilizo más las herramientas para desarrolladores de Chrome, la herramienta favorita para obtener resultados similares es sin duda <a href="http://getfirebug.com/">Firebug</a>. Gracias a esta <strong>extensión para Firefox</strong>, podrás inspeccionar el <span class="caps">DOM</span>, realizar cambios en el mismo, echar un vistazo a las peticiones <span class="caps">HTTP</span> realizadas, depurar código Javascript, analizar el rendimiento de tu aplicación, y otras muchas actividades realmente útiles durante el desarrollo. Imprescindible.</p>

<h2>Cliente de base de datos</h2>

<p>Si bien podemos operar con la base de datos desde línea de comandos, probablemente existan muchas operaciones (especialmente de consulta) que sería más cómodo realizarlas desde una interfaz gráfica más amigable. Si trabajas con <strong>MySQL</strong> y estás en Mac, te recomiendo que descargues <a href="http://www.sequelpro.com/">Sequel Pro</a>. Es una aplicación muy cuidada, y con la que podrás manipular a tu antojo cualquier aspecto de tu <strong>base de datos</strong>. Si prefieres tener una solución web, que corre en todas las plataformas, entonces te recomiendo <a href="http://www.phpmyadmin.net/home_page/index.php">phpMyAdmin</a>, desde el cual podrás igualmente hacer la mayoría de las operaciones entrando con cualquier navegador.</p>

<h2>Servidor de integración continua</h2>

<p>Es realmente sano hacer que los <strong>tests</strong> escritos para tu aplicación se <strong>corran de forma automática</strong> cada vez que subes algo al repositorio de control de versiones. Para este propósito, mi preferido es <a href="http://integrityapp.com/">Integrity</a>, un servidor muy ligero pero no por ello menos potente escrito en Sinatra.</p>

<h2>Organizador de tareas</h2>

<p>Es necesario que llevemos un <strong>control de las tareas</strong> que hemos realizado, estamos realizando o pensamos realizar, así como que marquemos unos objetivos a corto plazo y registremos cualquier tipo de notas relacionadas con las tareas o bugs que nos sirvan de base de conocimiento. Para todo esto, y para <strong>organizar el trabajo en equipo</strong>, lo mejor es utilizar un servicio online que encaje con vuestra forma de trabajar. En este caso, mis preferencias se decantan por <a href="http://pivotaltracker.com/">Pivotal Tracker</a>, un servicio web de gestión de tareas online que encaja perfectamente con la filosofía de trabajo <span class="caps">SCRUM</span>. Pero si prefieres un entorno más clásico de tickets, milestones y cosas así, o si sencillamente prefieres poder instalar la herramienta de gestión en tu servidor, <a href="http://www.redmine.org/">Redmine</a> es probablemente tu mejor opción. Y como está escrita en Ruby on Rails, siempre puedes extenderla fácilmente para ir adaptándola a tus necesidades.</p>

<h2>Conclusión</h2>

<p>Estas son algunas de las herramientas que utilizo a diario, y que se han convertido en parte imprescindible de mi trabajo. Espero que te resulten útiles para empezar. Y si ya trabajas con Ruby on Rails, esperamos que nos cuentes <strong>cuáles son tus preferidas</strong>.</p>      ]]></description>
      </item>
                    <item>
      <title><![CDATA[Herramientas imprescindibles para un desarrollador de Java]]></title>
      <link>http://www.genbetadev.com/java-j2ee/herramientas-imprescindibles-para-un-desarrollador-de-java</link>
      <guid>http://www.genbetadev.com/java-j2ee/herramientas-imprescindibles-para-un-desarrollador-de-java</guid>
      <pubDate>Mon, 23 May 2011 16:00:23 +0000</pubDate>

      <author>mangrar</author>
      <description><![CDATA[
      <p><img id="image76557" src="http://img.genbetadev.com/2011/05/javatools.jpg" class="centro" alt="Java tools" /></p>

	<p>Voy a hablar de las herramientas que considero imprescindibles para un desarrollador Java, en concreto para desarrollo J2EE. Puede que alguna se pueda obviar, como por ejemplo, <a href="http://maven.apache.org">Maven</a>, pero la verdad es que yo no puedo vivir sin &eacute;l. No incluyo en la lista la maquina virtual, es obvio que sin eso no puedes hacer nada:</p>

	<p><ul>
	<li>
		<strong>Lo primero es un IDE</strong>. Yo uso el <a href="http://www.eclipse.org">Eclipse</a>, que es el mas extendido, es opensource y es el que mas plugins tiene. Yo aconsejo descargarlo desde este <a href="http://eclipsesource.com/en/yoxos/">enlace</a>. Es una aplicacion web que te permite crearte tu propio paquete de plugins y descargarlo todo en un zip. Es muy &uacute;til para trabajar en un proyecto en equipo, ya que puedes distribuir ese zip entre los programadores, y te ahorras tiempo instalando los plugins desde el propio <span class="caps">IDE</span>. Otras opciones son <a href="http://www.netbeans.org">Netbeans</a> de Oracle (antes de <span class="caps">SUN</span>) o el premiado <a href="http://www.jetbrains.com/idea/">Intellij IDEA</a>. Este &uacute;ltimo es comercial, aunque tienen edici&oacute;n community.
	</li></ul></p>

	<p><!--more-->
	<li>
	<strong><a href="http://ant.apache.org">Apache Ant</a> o suced&aacute;neos</strong>. Es una herramienta para realizar tareas, como puede ser compilar y empaquetar un proyecto, aunque puedes configurar todo tipo de tareas, como desplegar un war en un servidor de aplicaciones, o subirlo por ftp por ejemplo. Utiliza un lenguaje <span class="caps">XML</span> para definirlas en un fichero <strong>build.xml</strong> en la ra&iacute;z del proyecto. Se integra muy bien en la mayoria de los IDEs. Existen en el mercado alternativas mejores que ant, como <a href="http://www.gradle.org/">Gradle</a> o <a href="http://buildr.apache.org/">buildr</a>, pero <strong>ant</strong> esta muy implantado y sigue siendo el que mas se usa.
	</li>
	<li>
	<strong><a href="http://maven.apache.org">Apache Maven</a></strong>.  Como ya he comentado, no puedo vivir sin maven. Es una herramienta de gesti&oacute;n de proyectos. Tiene infinidad de plugins. Su caracteristica mas &uacute;til, es que te descarga y a&ntilde;ade a tu classpath las librerias que usa tu proyecto. Solo tienes que definirlas en un fichero xml. La mayoria de IDEs lo soportan. Para Eclipse, necesitas instalar <a href="http://m2eclipse.sonatype.org/">m2eclipse</a> de SonaType.
	</li>
	<li>
	Un <strong>sistema de control de versiones</strong> no puede faltar, ni con java ni con cualquier otro lenguaje. El que mas he utilizado es <a href="http://subversion.tigris.org/">Subversion</a>. La mayor&iacute;a tienen plugins para los IDEs mas conocidos.
	</li>
	<li>
	<strong>Un editor de texto ligero con coloreado de sint&aacute;xis</strong>. Yo uso <a href="http://notepad-plus-plus.org/">Notepad++</a> o <a href="http://www.pspad.com/es/">PsPad</a> en windows. En linux uso el <a href="http://www.gedit.org">GEdit</a>.
	</li>
	<li>
	<strong><a href="http://www.cygwin.com/">Cygwin</a></strong>. Es como un emulador de linux sobre windows. Siempre lo instalo cuando trabajo en windows porque no me gusta su terminal. Puedes instalar muchos programas de la linea de comandos de linux que puedes elegir en el instalador.
	</li>
	<li>
	<strong><a href="http://www.putty.org/">Putty</a></strong>. Sirve para conectarse a un terminal remoto por <span class="caps">SSH</span> o telnet desde windows. Si estoy en linux, utilizo el comando ssh desde el terminal.
	</li>
	<li>
	<strong>Un frontend para la base de datos</strong>. Dependera con cual este trabajando. Ahora mismo utilizo <a href="http://www.dbvis.com/">DbVisualizer</a>.
	</li>
	<li>
	<strong>Navegador con depurador JavaScript</strong>. Estoy usando <a href="http://www.google.com/chrome/?hl=es">Chrome</a>, que viene con un depurador muy bueno. Antes usaba <a href="http://www.mozilla-europe.org/es/">Firefox</a> junto con el plugin <a href="http://getfirebug.com/">Firebug</a>.
	</li>
	<li>
	<strong>Servidor de aplicaciones</strong>. Actualmente uso el <a href="http://www.glassfish.org">Glassfish</a>.
	</li>
	<li>
	<strong>Bugtracker</strong>. Imprescindible para llevar un seguimiento de los bugs. Actualmente uso <a href="http://www.atlassian.com/software/jira/">Jira</a>, que es el mas extendido. Tambien he usado <a href="http://www.redmine.org/">Redmine</a>, <a href="http://trac.edgewall.org/">Trac</a> y <a href="http://www.bugzilla.org/">Bugzilla</a>. Uso un plugin para el eclipse, que me permite conectarme al bugtracker, ver los bugs disponibles y gestionarlos sin salirme del <span class="caps">IDE</span>.
	</li>
	<li>
	<strong>Servidor de integraci&oacute;n cont&iacute;nua</strong>. Uso <a href="http://jenkins-ci.org/">Jenkins</a> (hasta hace nada llamado Hudson). Sirve para programar los builds de los proyectos. Para configurar los &#8220;builds&#8221; lo habitual es conectarlo con el servidor de control de versiones. Puedes configurar que ejecute tareas de ant, &#8216;goals&#8217; de maven por ejemplo o cualquier otro tipo de script.
	</li>
	<li>
	<strong><a href="http://www.google.com">Google</a></strong>. Imprescindible, esto lo usamos todos los programadores, de cualquier lenguaje.
	</li>
	<li>
	<strong>Una aplicaci&oacute;n de notas</strong>. Yo uso <a href="http://www.evernote.com">Evernote</a>. Es un programa para crear notas y capturar p&aacute;ginas web o fragmentos de estas. Yo lo utilizo para almacenar art&iacute;culos y tutoriales interesantes para futuras referencias, o fragmentos de c&oacute;digo, todo clasificado por carpetas y etiquetas. Dispone de aplicaci&oacute;n para Windows, Mac, Android e iOS que se sincroniza con la aplicaci&oacute;n web .
	</li>
	<li>
	<strong>Servicio de almacenamiento en la nube</strong>. Yo uso <a href="http://www.dropbox.com">Dropbox</a>. Lo utilizo para guardar documentos relacionados con Java, como manuales de referencia de diversas tecnolog&iacute;as y frameworks. Teniendolos en un sitio, ahorro tiempo a la hora de consultarlos.
	</li>
	<li>
	<strong>Repositorios de c&oacute;digo opensource</strong>. <a href="https://github.com/">Github</a>, <a href="http://code.google.com">google code</a> y <a href="http://sourceforge.net/">sourceforge</a>. Muchas veces busco c&oacute;digo que me pueda ser de utilidad en el proyecto que estoy trabajando. 
	</li>
	<li>
	<strong>Papel y l&aacute;piz</strong>. A pesar de todos los avances tecnol&oacute;gicos, a&uacute;n uso este primitivo modo de escritura, jeje.
	</li><br />

</p>

	<p>Estas son las herramientas que yo considero imprescindibles, aunque puede haber m&aacute;s, dependiendo el proyecto en el que este trabajando.</p>      ]]></description>
      </item>
        	  <atom:link href="http://www.genbetadev.com/tag/herramientas-imprescindibles-para-desarrolladores/rss2.xml" rel="self" type="application/rss+xml" />
	</channel>

</rss>


