dpmWare Just my stuff, nothing else

13Jan/120

Recipe: From SVN to Git without pain

Are you already in love with Git? I'm pretty sure of that, that's the reason why you are reading this, huh?

These are the steps you should follow to migrate an existing SVN repository to a Git one:

1 - Create a file where you will map SVN users to Git users, following this pattern:

svn_user = git_user

This is the one I created to migrate some SVN repositories from Google Code:

$ cat authors_mapping_googlecode
dpecos = Daniel Pecos Martinez
(no author) = Daniel Pecos Martinez

The author (no author) is required to match some commits made by Google in the SVN repository creation process.

28Aug/110

Git-SCM (Part 2)

In a previous post, we have seen what Git is and its main characteristics. Now, we'll go more into detail about its functionality and we'll see what a usual day working with Git looks like.

But before, some initial concepts:

  • Repository: A working tree of files and directories which can be versioned, keeping track of every single modification made over the working tree, been able to move forward and backward in its history.
  • Branch: it is an alternative image of the repository, keeping track of its own history of modifications. A repository has a main branch called master, and it can have an undefined number of branches, some of them may be copies of remote branches and the default name for the upstream repository is origin. The current branch of the working copy can be always referenced as HEAD.
  • Commit: it is a concrete state of a branch, containing the modifications made to the entire working tree since the previous commit in the history, as well as author information and timestamps. It can be identified by its SHA hash, but a name or tag can be associated to it in order to make thing easier.
  • Merge: it is the process of integrating changes or commits of two different branches. This integration is automatically carried by Git, if there are no conflicts between commits.
  • Push: the changes committed in a local branch into a remote branch.

These are the basic concepts we are going to use in the rest of this post. Now let’s start with the fun!

31Mar/110

amCharts Javascript Tutorial: Parsing dates and styling up the chart

Recently I began a collaboration with amCharts, writing some tutorials for their blog. This is my first contribution, and you can find the original post in amCharts blog.

http://blog.amcharts.com/2011/03/amcharts-javascript-tutorials-part-3.html

I hope you'll enjoy my first tutorial about this great graphs library! And, of course, feedback is wellcomed!

8Dec/101

HTTP connection + HTTP Authenticacion + Proxy + SSL

Many times during your life as a java developer, you will face the situation of retrieving some resources using an HTTP connection. At first, it will seem easy, but probably some problems will arise such as:

  1. Needing to use an HTTP Proxy (maybe authentication would be required)
  2. Establishing an HTTP authenticated connection
  3. Connecting to a server that uses SSL self-signed certificates

I'm sure you will quickly find the Apache Commons solution: commons-httpclient. In this article I will show you some code that, I hope, will ease you the  resolution of the previous obstacles using this great API from Apache.

18Nov/100

Git-SCM (Part 1)

One of the key tools of a software project development is the repository where it's hosted. During my experience as software developer I have been working with several flavors, such as Visual SourceSafe, CVS, Mercurial, and of course, SVN. But latetly I have found this little jewel called Git.

Git was initially developed by Linus Torvalds as a result of an unsuccessful research to replace the propietary SCM BitKeeper, used back in 2005 in the Linux Kernel project (kinda strange that the opensource star project was hosted with a propietary software, huh?). Back then, the ability to freely use BitKeeper was withdrawn by its copyright holder, so Linus was forced to find a replacement for it. He was looking for a VCS with a high performance in the process of applying patches and keeping track of the changes, but he didn't find any opensource solutions that fitted his requirements, so he started the developement of Git (as he says on Git's Wikipedia entry, Git was named after himself, because he considers himself an "egoistical bastard, and I name all my projects after myself"; git is the British English slang word for an stupid or unpleasant person).

That's why its main characteristics are oriented to help the development and management of a huge, distributed and collaborative project like the Linux Kernel. These are the most noticeable of them:

  • Strong support for non-linear development
  • Distributed development
  • Efficient handling of large projects
  • Cryptographic authentication of history
  • ...

But for me, the most shocking one is its decentralized structure in distributed development: there is no need for a central repository where all commits are sent by the people working in the project (but still, it is recommended to use a main branch for that purpose).

In following posts I will explain how to use Git in the lifecycle of a software project and how can it improve our performance.

Tagged as: , , , , , No Comments
2Sep/090

GNU HttpTunnel: Como saltarse un proxy HTTP

Creo que es la primera vez que posteo sobre una aplicación, pero creo que en este caso merece la pena hacerlo. Se trata de GNU HttpTunnel, una pequeña aplicación que crea un túnel HTTP sobre el que podemos meter cualquier servicio. ¿Ventajas? Pues que al ser HTTP, si nos encontramos en una red que solo tiene salida a Internet mediante un proxy HTTP, con esta aplicación (y un PC fuera de la red), podemos salir de la red con el servicio que más nos interese.

HTTP Tunnel

Aquí va el chuletario:

En el PC al otro lado del proxy (fuera de la red) ejecutamos:

$ hts -w -F host_remoto:puerto_remoto puerto_local_servidor

y en el cliente (detrás del proxy) ejecutamos:

$ htc -P ip_proxy:puerto_proxy -F puerto_local_cliente ip_servidor:puerto_local_servidor

Por ejemplo, si quisiera crear un tunel HTTP para el SSH que tengo en mi servidor de casa (cosa muy útil, por si tuviera que abrir nuevos túneles ;-) ), tendría que ejecutar el siguiente comando en dicha máquina:

$ hts -w -F localhost:22 7022

lo cual crearía un tunel a la expera de conexión en el puerto 8022 del servidor (este puerto tendría que hacerlo accesible desde internet, en caso de que nos encontremos detras de un router sin NAT), y en la máquina desde la que me quiero conectar ejecuto:

$ htc -P ip_proyx:80 -F 22 ip_servidor:7022

de forma que ahora al conectarme al puerto 22 de la máquina local, realmente me estoy conectando al puerto 22 del servidor de mi casa.

Pues espero que os sea útil!

Un saludo!

Más info:

11Nov/085

Ingeniero informático, to be or not to be?

Desde hace un par de semanas está circulando una convocatoria de huelga para los ingenieros informáticos. Según comentan en la web, esta huelga se debe a la exclusión de las titulaciones de Informática de las propuestas de en las que se proponen los títulos habilitados para ejercer distintas profesiones. Concretamente se atribuyen a la Ingeniería en Telecomunicaciones muchas (por no decir prácticamente todas) las funciones que ejerce un Ingeniero Informático. Según comentan en dicha web, el Ministerio de Educación justifica esta decisión argumentando que:

"La informática se trata de una materia transversal, por lo que no puede concentrarse en una titulación concreta"

La cuestión es que se está levantando mucho revuelo (en parte con razón) y está ciruclando mucha rumorología que hace poco bien. Como bien explica Enrique Barreiro (profesor de Ingeniería Informática en la Universidad de Vigo) en esta web, hay dos problemas que se están mezclando en toda esta rumorología:

  1. El diseño de los nuevos títulos adaptados al Espacio Europeo de Educación Superior, y
  2. La regulación de la profesión (que se nos asignen las atribuciones que ejerzamos).

(En esta imagen tenéis un resumen light de lo que comentan)

Dos problemas diferentes pero relacionados, y es que al parecer la adaptación no se ha llevado a cabo para el proceso de Bolonia debido a que la informática no es una profesión regulada. Entonces, ¿por qué no se regula la profesión de informática? Básicamente porque les resulta caro a los empresarios. Y es que ahora mismo el intrusismo laboral de nuestro sector es común, y lo peor, ampliamente aceptado por todos nosotros. ¿Os imagináis a un chaval que se haya leido un libro de arquitectura proyectando edificios? Claro que sí, por poder claro que puede y seguro que hay algún genio que es capaz de hacerlo, pero ¿se lo construirían sin una firma de un arquitecto? Claramente no.

En informática no es raro encontrar químicos, telecos, matemáticos, físicos, aficionados o cualquier otra cosa. Seguramente sean perfectamente capaces de realizar el trabajo que realizan, gracias a la experiencia adquirida y la formación no homologada que hayan recibido, pero esto sería impensable en otros sectores como Derecho, Industriales o Medicina (por capaz que fueras de desarrollar la tarea).

En resumen, mi inquietud personal es: ¿Por qué se me considera menos ingeniero que a un industrial? La respuesta es sencilla: por que no nos hacemos valer, triste pero cierto. No tenemos conciencia de grupo, somos individualistas por lo que nuestro poder sindical es nulo. Además, por lo mismo, no tenemos un Colegio Oficial que defienda la profesión, al contrario de como ocurre con otras profesiones.

En fin como buen informático no me queda otra que la resignación (o hablando claro, bajarme los pantalones y que me hagan lo que quieran que yo seguiré tragando lo que me toque)... Triste pero como no lo hagas, a la puta calle que seguro que hay otro informático detrás de ti (aunque tampoco es necesario que sea informático) que por menos dinero que lo que tu pides, tiene los pantalones más abajo.

28Sep/082

GDD MAD 2008… ¡Estuve allí!

1003

Fue un día agotador, pero valió la pena. Mucha gente, mucho nivel (no tanto en los talleres, pero bueno) y muy buen ambiente. No voy a hacer más resumenes acerca del evento (ya he leído unos cuantos en un rato), simplemente recomendar que si tenéis la posibilidad de asistir al GDD MAD 2009 no dejéis pasar la oportunidad.

Temas principales sobre los que se hablaron:

  • Android (tema estrella sin duda)
  • Chrome
  • AppEngine
  • Gears
  • Opensocial

A continuación os dejo un enlace al álbum en flickr con las fotos que tomé.

¡Un saludo!

3Sep/080

¿Look & Feel? ¿Qué es eso?

L&F de varias aplicaciones en WinXP

Éste es el aspecto de varias aplicaciones ejecutándose en Windows XP. Como se puede ver en la imagen últimamente las empresas optan por una diferenciación en cuanto a aspecto de la ventana (Look & Feel), perdiéndose la integración a la que estábamos habituados con el sistema operativo. De hecho, en la captura de pantalla, la única aplicación que mantiene el L&F de Windows XP es el Explorador de Ficheros.

Y tú qué opinas acerca de ésto: ¿es bueno? ¿es malo? ¿te la suda?

2Sep/080

Google anuncia Chrome

Tras varios años de rumorología acerca de si Google iba a publicar un navegador web propio o no, finalmente se ha aclarado: su nombre es Chrome. Será un proyecto opensource basado en WebKit de Apple (el motor de renderizado de Safari) y según comentan, incluye un motor Javascript escrito desde cero, con el fin de mejorar el desempeño tanto en tiempo de ejecución como en consumo de memoria, con respecto a los navegadores que actualmente hay en el mercado. Otras características que incorpora son la navegación anónima, un sistema "Speed Dial" como el de Opera o una barra de autocompletado basada en el buscador.

¿Qué es lo que pretende Google con esto? Según ellos, aportan innovación de cara al usuario, aunque personalmente lo que quieren conseguir es convertir al navegador en un sistema operativo (bueno, a lo mejor es un poco exagerado, pero sí en una fuente completa de aplicaciones), ya que supongo que uno de sus puntos fuertes será el poder ser ejecutado sin barra de herramientas ni menús, al estilo de Prism de Mozilla, consiguiendo que las aplicaciones web tengan un aspecto de aplicación de escritorio. Además, con la inclusión de Gears en Chrome, se ofrece la posibilidad de que las aplicaciones web almacenen datos en el propio navegador, abriendo un gran abanico de posibilidades para la tecnología web.

Como nota curiosa, comentar que Google ha utilizado su estilo característico en la publicación de Chrome utilizando viñetas de cómic para ello.

Habrá que ver cómo afecta esto a los otros grandes navegadores y que implicaciones creará en el desarrollo de aplicaciones web. Renovarse o morir...

Enlace a noticia en EstiloHacker.com

ACTUALIZACIÓN (02/09/2008 @ 23:05): El sitio ya está disponible... ¡a bajar!