Después de actualizar a Windows 8.1 a 64 bits, un proyecto me arrojaba el siguiente error al ejecutarlo

BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)

justo en una línea donde se crea un objeto de la librería de Oracle -OracleParameter-

El problema se debe a la configuración del proyecto, en target tenía “Any CPU”, así que como mi sistema operativo es de 64 bits marcaba el error al tratar de utilizar la librería cliente de oracle de 32 bits.

La solución fue cambiar la propiedad “target” del proyecto a “x86” mediante el menú Build->Configuration Manager y crear una nueva.

Cabe destacar que después de hacer esto me marcaba errores de que no encontraba ciertas dependencias debido a que crea un nuevo directorio de salida “bin/x86/Debug” y buscaba las dependencias (copia local) en la carpeta “bin/Debug”. Al volver a apuntar la carpeta de salida (Project Properties, Output) a “bin/Debug”, es decir sin el “x86”, ya no me marcó errores.

Fuentes:

Anuncios

De acuerdo a esta pregunta en stackoverflow, existen 2 formas principales de lograr esto. Una es utilizando submodules y la otra haciendo un “subtree merge”. La primera es para proyectos realacionados pero que siguen un desarrollo independiente el uno del otro. Y el segundo, que es el que vamos a utilizar, es para integrar el código de un proyecto dentro de otro.

Pues lo primero es agregar como remoto el proyecto que queremos agregar

   git remote add -f panda git://github.com/TekNoLogic/Panda.git

después hacemos el subtree merge de la siguiente forma

   git merge -s ours --no-commit panda/master
   git read-tree --prefix=panda/ -u panda/master
   git commit -m "Subtree merged in panda"

Si el código que quieres integrar esta en una subcarpeta puedes hacer lo siguiente

   git read-tree --prefix=cork2/submodule -u cork/master:src/main/submodule
   git commit -m "Subtree merged in cork2/modules"

Fuentes:

https://help.github.com/articles/working-with-subtree-merge
http://nuclearsquid.com/writings/subtree-merging-and-you/
http://stackoverflow.com/a/1426163/961652

Cuando inicias algún proyecto, muy probablemente lo hayas creado localmente (en tu computadora). Si después quieres moverlo a un servidor para compartirlo y que los demás puedan contribuir a tu proyecto, necesitas mover tu repositorio local a un servidor compartido.

Para hacer esto, ejecuta el siguiente comando para crear un clon de tu repositorio

git clone –bare /path/to/repo /path/to/bare/repo.git

Luego copia esta carpeta al servidor -mediante usb, ftp, ssh o lo que puedas-.

Puedes comprimirla antes de copiarla con

tar -zcvf /path/to/bare/repo.git repo.tar.gz

y descopmrimirla en el servidor con

tar -zxvf repo.tar.gz

Ahora para poder sincronizar con este nuevo servidor, cambia el origen de tu directorio de trabajo (working tree)

git remote rm origin

git remote add origin ssh://user@dev.foo.com/path/to/bare/repo.git

suponiendo que tienes acceso al servidor mediante ssh y luego envía tus cambios al nuevo servidor

git push

Fuentes:
http://stackoverflow.com/questions/4860166/how-to-synchronize-two-git-repositories
http://kovshenin.com/2011/transfer-your-existing-git-repository-to-github/
http://stackoverflow.com/questions/1402390/git-push-clone-to-new-server/1402783#1402783
http://www.wetware.co.nz/2009/07/pull-a-git-branch-from-remote/ 
http://www.kernel.org/pub/software/scm/git/docs/git-clone.html#_git_urls_a_id_urls_a 

El registro de eventos en una aplicación puede ser muy útil a la hora de buscar errores. Para ello existe una excelente librería llamada SLF4J.

En un proyecto maven agregamos la dependencia a dicha librería mediante las siguientes líneas

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-api</artifactId>
 <version>1.6.1</version>
</dependency>

Como SLF4J no es una implementación sino solamente define las interfaces (API), también es necesario agregar una librería que implemente dichas interfaces. En este caso utilizaremos log4j, para ello agregamos la siguiente dependencia

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-log4j12</artifactId>
 <version>1.6.1</version>
</dependency>

Ahora vamos a crear un archivo llamado log4j.properties en la carpeta src/main/resources -este archivo será copiado automaticamente por Maven al directorio target/proyecto/WEB-INF/classes para que pueda ser leído en tiempo de ejecución por la librería log4j- con el siguiente contenido

# Escpecificar el nivel de mensajes que queremos ver y los receptores de mensajes
log4j.rootLogger=DEBUG, A1

# Agregar a la consola como único receptor y especificar formato del mensaje
log4j.appender.A1=org.apache.log4j.ConsoleAppender
log4j.appender.A1.layout=org.apache.log4j.PatternLayout
log4j.appender.A1.layout.ConversionPattern=%d{HH:mm:ss,SSS} %-5p [%c] - %m%n

Ahora sólo falta registrar los mensajes en nuestro código, por ejemplo

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class Video {
 final Logger log=LoggerFactory.getLogger(Video.class);
 public static List<Video> getVideos(){
 try{
 // obtener lista de videos
 }catch(Exception e){
 log.error("Error al obtener la lista de videos",e);
 }
 }
}

Listo, de esta forma aparecerán los mensajes en la consola de Eclipse 😉

Fuentes:
http://logging.apache.org/log4j/1.2/manual.html
http://blog.mograbi.info/2010/08/setting-up-log4j-in-maven-project.html

Para renombrar, primero cierra el proyecto en Qt Creator. Abre una terminal y ve al directorio donde esta el archivo con extensión ‘.pro’ y renombralo.

mv miproyecto.pro elproyecto.pro

Vuelve a abrirlo en Qt Creator y ya debería aparecerte con el nuevo nombre 😀

Fuentes:
http://www.qtcentre.org/threads/26845-Copy-Rename-project 

Al abrir un proyecto en Qt Creator, lo primero que me apareció fue el asistente de configuración.

Este te permite configurar los objetivos -targets- de compilación, es decir, que ejecutables quieres que se generen. Hubo una opción que me llamó la atención, la de “Use Shadow Building”. Nunca había escuchado algo por el estilo, así que investigando un poco encontré la siguiente definición.

Shadow building means building a project in a separate directory, the build directory. The build directory is different from the source directory. One of the benefits of shadow building is that it keeps your source directory clean. Shadow building is the best practice if you need many build configurations for a single set of source.

Lo cuál quiere decir que los ejecutables quedarán (ó deberán estar) en una carpeta fuera de la carpeta de tu proyecto para mantener el código de tu aplicación limpio y en orden.

Para crear un nuevo proyecto puedes utilizar un arquetipo (que es como una plantilla). Yo quería crear un proyecto de servicios web, y pues, ya existe un arquetipo que utiliza el Apache CXF Framework, se llama “cxf-jaxws-javafirst”. Puedes encontrarlo en el repositorio central aquí (versión 2.5.0).

Pues para mi sorpresa no se mostraba en el asistente de nuevos proyectos de maven, al parecer existe un problema con m2eclipse. Así que tendrás que crear el proyecto desde la línea de comandos de la siguiente forma:

mvn archetype:create -DarchetypeGroupId=org.apache.cxf.archetype -DarchetypeArtifactId=cxf-jaxws-javafirst -DarchetypeVersion=2.5.0 -DgroupId=com.acme -DartifactId=cxf-sample -Dversion=0.0.1-SNAPSHOT

Asegurate de modificar las coordenadas de acuerdo a tu proyecto 🙂