viernes, 24 de mayo de 2013

Versionado, gestión y vinculación de tareas y deploy automático con #bitbucket, #git, #jira

Hoy me gustaría explicar cómo tener un entorno de desarrollo óptimo para freelancers o grupos pequeños de trabajo por menos de 10€ idealmente con un servidor dedicado o uno virtualizado.


Bitbucket

Lo primero que necesitamos es una cuenta de Bitbucket. Bitbucket permite alojar repositorios GIT (además de mercurial) como podría hacer Github, pero tiene la peculiaridad de que nos permite tener repositorios privados ilimitados de forma gratuita. La única limitación que tiene es el número de usuarios que pueden acceder a tus repositorios: que empieza siendo 5 y que puede subir hasta 10 con referers. Los proyectos tienen también de forma gratuita, wiki, un sistema de tareas y de otro revisión de código.

Jira 6

En Atlassian venden el Jira 6 autogestionable para 10 usuarios por 10$. Como Bitbucket ya limita a 5-10 usuarios, posiblemente con 10 usuarios también haya suficiente al menos para llevar un tracking interno de tareas.

TortoiseGIT

El TortoiseGIT es la opción por excelencia para usar GIT desde windows.

domingo, 3 de marzo de 2013

atpl.js, mi twig para node.js, completado #nodejs #twig

Hoy he terminado mi proyecto atpl.js.

atpl.js (Advanced TemPLates) tenía como intención implementar completamente el proyecto de sistema de templates Twig, pero en vez de para PHP, para Node.JS.
Tengo constancia de un par de proyectos que pretendían/pretenden hacer eso mismo: swig y twig.js.



Historia:
El proyecto lo empecé hará cosa de un año, pero decidí dejar algo de tiempo a los proyectos swig y twig.js para ver si maduraban e implementaban twig de una forma correcta. Para mediados de diciembre de 2012, con TypeScript recién salido del horno, y viendo que swig y twig.js no habían madurado lo suficiente, decidí retomarlo en TypeScript. Y tras haber trabajando en el proyecto de forma intermitente desde entonces hasta día de hoy, he implementado todas las funcionalidades de Twig de las que tengo constancia.

viernes, 2 de noviembre de 2012

Tecnologías emergentes alternativas a tradicionales (apache, mysql, php, jpeg, png, mp3...)

Estamos en un mundo en constante cambio, y los grandes avances en Internet han permitido a más gente comunicarse y reaprovechar las investigaciones y conocimientos de los demás. Esto ha hecho que el mundo de la informática y posiblemente el mundo entero, haya evolucionado a una velocidad vertiginosa en los últimos tiempos.

En el caso de la programación, los lenguajes y las tecnologías también ha habido un cambio sustancial en los últimos tiempos. Es por eso que ciertas tecnologías tienen ya algunas alternativas que son ampliamente mejores.

 

Stack web:

Tradicionalmente el stack típico opensource y popular era un AMPP (Apache-MySQL-PHP-Perl).

Yo he estado muchos años usando PHP, MySQL y Apache para desarrollo web. Y mucha gente ha hecho lo mismo.

martes, 2 de octubre de 2012

Introducción a #TypeScript y #tutorial con #NodeJs

Pequeña introducción

El día 1, Microsoft anunció TypeScript, un nuevo lenguaje de programación similar a Dart o a CoffeScript o a HaXe. Me enteré de casualidad (últimamente no sigo mucho Twitter) y en un principio no me llamó la atención. Pensé: otro Dart. Y lo cierto que Dart tenía buena pinta, pero no he acabado usándolo por ciertos motivos que ya comentaré en otro post. Pero luego me informé un poco más y me dejó completamente encandilado. Así que llevo 2-3 días trasteando a ratos con TypeScript para poder escribir una entrada introductoria que sea útil a la gente que quiera saber qué es y cómo usarlo.

¿Qué es TypeScript?

TypeScript es un lenguaje de programación tipado que está pensado para transformar su código a JavaScript. Es un superset de JavaScript (lo que quiere decir que cualquier JavaScript es también TypeScript) y tiene como objetivo ser una transición hacia las nuevas especificaciones de Ecmascript. Soporta tipado estático, clases, interfaces, múltiples definiciones de funciones y métodos, delegados “reales” (manteniendo el this sin tener que guardarlo y usar otro). Pero lo mejor de todo: hay creada una serie de herramientas de desarrollo de una calidad asombrosa (que es lo que Dart estaba empezando a  conseguir).

miércoles, 19 de septiembre de 2012

Montar #servidor web #ARM barato para #intranet

Recientemente he tenido que montar un pequeño servidor para una aplicación web que tenía que estar en una intranet. He aprovechado que tenía un TonidoPlug para montarlo ahí, aunque hoy por hoy hay multitud  de mini ordenadores ARM en los que puedes instalar linux.

Mini-Ordenadores ARM:

Desde Raspberry Pi (25$+), pasando por el famoso MK802 (54$), FXI Cotton Candy (TBA), Panda Board (161$), Hackberry (60$), BeagleBoard (150$), CuBox (140$), Gumstick Overo (150$), TonidoPlug2 (120$), OpenRD (150$), Pogoplug Pro (?), BeagleBone (89$), IGEPv2 (188€), Mele A100 (95$), Nitrogen6X (300$), ODROID-X (129$), TrimSlice (213$+)... Los rangos de precios van de 50€ a 300€ y la media está en 100€.

martes, 24 de julio de 2012

Instalar PEAR y PHPUNIT en PHP 5.4 sobre Windows

En versiones anteriores de PHP, en las distribuciones binarias para windows, venía un archivo .bat "go-pear.bat" que permitía instalar pear. Ahora (en PHP 5.4) ese comando ya no está disponible y he perdido un buen rato configurándolo todo.

1- Bajar e instalar PEAR
Nos descargamos el archivo http://pear.php.net/go-pear.phar y lo guardamos en la carpeta de PHP. Y luego desde la consola como administrador ejecutamos el comando php go-pear.phar. Si no lo ejecutamos como administrador no podrá escribir el archivo \WINDOWS\pear.ini y fallará la instalación.

2- Instalar PHPUnit
He intentado seguir las indicaciones oficinales de PHPUnit y no he logrado instalarlo por falta de la extensión "pcntl" que además no está disponible en Windows. Pero ejecutando estos comandos deberíamos poder instalar la versión 3.6 sin problemas:

pear channel-discover pear.phpunit.de
pear channel-discover components.ez.no
pear channel-discover pear.symfony-project.com
pear update-channels
pear install phpunit/PHPUnit

Espero que las indicaciones sirvan a alguien o a mí en un futuro cuando ya no las recuerde :)

miércoles, 23 de mayo de 2012

Patrón de máquina de estados reutilizable en .NET #dotnet

Es bastante común en programación, querer cambiar el valor de una variable temporalmente. Algo tipo:

int variable;


int oldValue = variable;
variable = newValue;
{
   ...
}
variable = oldValue;

Y aún así, este código no es del todo correcto. La forma correcta sería: