Merge a branch with the trunk in Subversion

I restart my blog posting activity by sharing with you a little cookbook that may be useful if you use Subversion to manage your source code repository.

If you are using Subversion, you most likely have already created (or thinking of creating) branches to manage different versions of your source code.

When the time comes to merge my changes between branches or a branch and the trunk, I always forget the syntax, so here's a small step by step merge execution.

I am assuming you have checked out both the branch and trunk from your subversion repository. If you haven't done so, you can easily checkout with:

svn co <repository>

First of all, go to the branch main directory, and execute the following:

svn log --stop-on-copy

The last entry is the version number corresponding to the creation of the branch, and looks something like the following:

r2887 | daniel | 2008-03-25 12:20:52 +0100 (Tue, 25 Mar 2008) | 1 line
Creation of new branch for version 1.6. ------------------------------------------------------------------

So, we have found out that the version is 2887. Now, change directory to the trunk, and execute the following command:

svn up

The output of this command should be something like:

At revision 3117.

Basically, that means that we have to merge the changes from revision 2887 to 3117, using the following command:

svn merge -r2887:3117 https://<repository>/branches/<version>

Now, you should check the changes performed to your local copy, and resolve any change conflicts that may appear.

Once you have verified that the changes are correct, you can check in with the usual svn ci.



 

Convertir RSS2 a Movable Type

Últimamente he estado probando Movable Type, y la verdad es que me gusta, así que he decidido migrar este blog a dicha plataforma. El problema es que para importar los posts del blog antiguo, la gente de Six Apart no proporciona ninguna utilidad para convertir los posts de otro blog, sino que éstos deben introducirse con un formato especial de Movable Type. Además, tengo pendiente encontrar algún diseño que me guste, o adaptar alguno.

Después de buscar algún conversor, deduciendo al fin que no había ninguno hecho, decidí hacer uno. Convierte los posts exportados en RSS2 (diría que todas las plataformas de blogging permiten exportar todos los posts en RSS2), al formato específico de MovableType.

Está hecho en Java (1.5) y os lo podéis descargar aquí:
Ejecutable RSS2MT (.class) - para ejecutar: java RSS2MT feed.rss posts.mt
Código fuente RSS2MT - para compilar: javac RSS2MT.java
(Adjunto el código fuente también en el cuerpo del artículo.)

Además, me ha servido para conocer una serie de clases muy interesantes de Java para manipular fechas (Date, DateFormat y SimpleDateFormat).

Por un lado, se crea un objeto SimpleDateFormat con el formato de fecha en la que tengamos el String (i.e: Web, 12 Apr 2006 19:24:50 +02:00 sería EEE, dd MMM yyyy HH:mm:ss Z)
SimpleDateFormat dateParser = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss Z");
Se lee la fecha contenida en el String date
Date formattedDate = dateParser.parse(date);
Se aplica el nuevo pattern (04/12/2006 19:24:50)
dateParser.applyPattern("MM/dd/yyyy HH:mm:ss");
Y se escribe la fecha previamente leída con el nuevo formato
out.println("DATE: " + dateParser.format(formattedDate));




 

NetBeans WorldTour CD

Estoy seguro que muchos conoceréis el IDE para programar en Java que ofrece Sun de forma gratuita llamado NetBeans. Aunque mucha gente prefiere Eclipse, a mí siempre me ha gustado más NetBeans, quizá porque cuando tuve que elegir un IDE con el que empezar, estaba mejor este último. Además, tiene versión para Mac, Windows, Linux y Solaris.

Así por encima, permite desarrollar todo tipo de aplicaciones Java (J2SE, J2EE, J2ME...), tiene la posibilidad de diseñar una interfaz gráfica con SWING o AWT de forma gráfica (drag & drop, al estilo Visual Studio), autocompleta y se integra completamente con el javadoc, indica a medida que se escribe información sobre las funciones disponibles para cada objeto, et cetera. Además, para desarrollar aplicaciones web con servlets y JSP, lleva integrado tomcat, de forma que automáticamente ejecuta el servidor, despliega la aplicación y se lanza un navegador directamente a la aplicación que se "ejecuta".

Os cuento esto sobre NetBeans porque hoy mismo me ha llegado un CD con NetBeans 4.1 para varias plataformas que había pedido por la web. Si lo queréis probar, o simplemente como yo, os interesa tenerlo en CD por comodidad, podéis pedir que os lo envíen a casa completamente gratis aquí:

Order Your Free NetBeans worldTour CD




 

Programando en Java: Control del Mouse - MouseListener (IV)

Después de acabar de dibujar los Panels (Frames, Canvas...) del artículo anterior, era necesario implementar el control de movimiento del Mouse, generar eventos al mover el mouse, hacer click o arrastrarlo, por ejemplo.

Particularmente, lo que me interesaba era manipular con movimientos del mouse una serie de gráficos (que tenía dibujados en los Panels creados anteriormente), desplazar un gráfico respecto a los ejes, mover vértices de lugar, hacer zooms, cambiar el tamaño, en fin, prácticamente cualquier cosa que se nos pueda ocurrir puede hacerse.

Para tal cosa, he utilizado MouseAdapter implementando MouseMotionListener. A continuación os explico cómo hacer uso de estas clases.



 

Programando en Java: Panel y Graphics (III)

Una vez terminado el parser para mi XML del que hablé en el anterior post de esta serie de artículos sobre Java, me he puesto ya con la parte interesante, los resultados, los gráficos.
A simple vista, puede parecer fácil dibujar unos ejes, y unas líneas de colores diferentes. Y lo es, pero para alguien que nunca había usado Java para esos menesteres, se hace algo complicado.

Además, a todo ello se une el hecho que la interfaz principal del programa no la he programado yo, sino que he usado Thinlet para hacerla, lo que simplifica mucho y ahorra conocer cómo funciona AWT, SWING, etc.

A continuación os explicaré cómo crear un Frame, y cómo pintar cosas en él.



 

Programando en Java: XML et al (II)

Se puede decir que en estas dos semanas desde que empecé con el mundo de Thinlet en Java, he hecho bastantes progresos. Ya tengo la interface funcionando, aunque hasta hace un par de días, de forma estática. Unos campos fijos, unas etiquetas también fijas, y para variar, diálogos, botones y demás también fijos.

Al parecer esto de ser tan estático no le hace demasiada gracia a las altas esferas (director de proyecto), así que me he propuesto hacer la interface dinámica tan sólo modificando un XML con una sintaxis sencillita, tal que <filedialog buttonname="" textname="" labeltext="" /> o <camp labeltext="N: " name="camp_n" default="70"/>

La audiencia se preguntará por lo tedioso del parseado, pues bien, resulta bastante sencillo, si contamos con las herramientas adecuadas (JDom). A continuación os ejemplificaré algunas de sus utilidades.

También os explicaré como incluir un jar dentro de un jar, es decir, compilar nuestro jar del proyecto de netbeans con una librería que nos hayamos bajado que también esté en jar, dentro del mismo, para que no haya problemas de falta de librerías en otra máquina.



 

Programando en Java: The Thinlet World (I)

Me gustaría decir que el cambio de C++ a Java para el proyecto ha sido por razones de portabilidad, que si el código libre, y otras chorradas que se suelen decir, aunque lo bueno es que ahora podré programar tanto en Windows como en el estupendo MacOS X (sí, somos unos sectarios).
Realmente no ha sido por eso. La verdad es que es complicado crear interfaces con MFC.

A lo que iba, he descubierto (realmente, Isaac ha descubierto, merci), unas librerías para crear interfaces en Java que se llaman Thinlet. Lo cierto es que promete. Por lo que he visto hasta ahora, se pueden hacer cosas interesantes.



 

Programant (és un dir) amb GTK+ (I)

Estic intentant introduïr-me en GTK, en part perque haig de fer una aplicació gràfica (pel projecte final de carrera) i perque tambè em fa gràcia que l'aplicació pugui executar-se amb canvis mínims sota Windows i Linux (i altres, suposo...).

Sincerament, m'ha donat per mirar GTK perque trobo les MFC de Visual C++ bastant liades en el moment en el que es vol fer canvis de diàleg (amb nomès un diàleg t'ho fa pràcticament tot el visual c sense dir-li res)

Respecte a Visual Basic (per si algú se li passa pel cap suggerir tal "llenguatge", per dir-ho fi): NO, NO i NO. Vaig fer una promesa amb una persona desprès de passar-ho molt malament per estar forçat a programar amb aquella cosa. No tornar a fer servir aquesta cosa mai més.

De moment he aconseguit compilar un Hello World amb GTK (un cop instal·lat libgtk2.0-dev)
Per tal que funcioni, s'han de passar flags al gcc. La cosa quedaria així:

newton:~/Projects> cc `pkg-config --cflags --libs gtk+-2.0` gtkprova.c -o gtkprova.o

El pkg-config s'encarrega de posar tots els flags necessaris (que no són pocs).

Ja us anirè explicant els meus progressos. O pel contrari, la meva tornada a les MFC del Visual C ;)



 

Backtracking: buscando el camino mínimo en un grafo

Código en C++ de un algoritmo (usando backtracking) que busca el camino óptimo (de coste mínimo) en un grafo entre un vértice y todos los demás (algoritmo de Dijkstra).



 

Implementación de la estructura Grafo en C++

Graf.h

class CGraf {

private:
	int NumNodes;
	int *array;
		
public:
	inline CGraf() { array=NULL; }
	inline ~CGraf() { delete []array; }
	CGraf(int dim);
	CGraf(const CGraf &copia); //Constructor de copia
	CGraf& operator=(CGraf &copia); //Sobrecarrega operador =
	int &operator()(int i, int j); //Sobrecarrega operador ()
	friend istream& operator>>(istream& is, CGraf &copia); //Sobrecarrega operador >>
	inline int GetNumNodes() { return NumNodes; } //Retorna num de nodes
 	CNodeList GetNeighbourgs(int Index);

};



 

Search



About

newton.gra2.com is a blog about technology, opinion and random thoughts written by Daniel Alvarez, a computer engineer currently living in Zurich, Switzerland.

Topics

News (20/0)
Manuals (24/0)
Security (7/0)
Music (3/0)
Weeklog (1/0)
Personal (34/0)
Programming (13/0)
Photos (3/0)
Opinion (14/0)
Windows (5/0)

Blogroll

Pros i contres (Jordi)
Entrepa de fusta (Oriol)
Spaghetti Code (Isaac)
Made in net (Eric)
Nogare (Juan)
Blog de Isaac Jimenez
Web d'en Jaume Benet
Montcada Wireless (Fran)
Blog d'en Ricard Forniol
Angela Fabregues
in.solit.us

Libertad Digital
FOX News
The Wall Street Journal
The Washington Times
The Jerusalem Post

Michelle Malkin
Eurabian News
Nihil Obstat
Barcepundit
Expose the left
Davids Medienkritik
Johan Norberg
Ayaan Hirsi Ali

User Functions

:

:


Lost your password?

Latest posts

Stories

No new stories

Comments last 2 days

No new comments

Trackbacks last 2 days

No new trackback comments

Links last 2 weeks

No recent new links