domingo, 19 de octubre de 2014

[Java] Utilizar google code como repositorio para proyecto de netbeans



 

Uno de los problemas que tenemos  cuando trabajamos con varias personas en especifico en proyectos de desarrollo, es que siempre los programadores requieren su autonomía (no meterse en sus códigos) por lo que regularmente los programadores trabajan por módulos buscando un resultado, un tiempo con un código lo mas automatizado posible. Una forma en la cual podemos compartir código o simplemente tener respaldo de las versiones de nuestro desarrollo es mediante versionadores, los cuales actualmente tenemos muchos tipos y colores, en este caso utilizaremos google code para guardar nuestra versión de nuestro programa en la nube y al mismo tiempo traer colaboradores en este caso trabajaremos con netbeans y con la pagina de google code

1). Primero crearemos nuestro repositorio. 

 

Para este paso necesitaremos crear nuestro repositorio, para esto daremos clic en la opción de crear un proyecto el cual le daremos un nombre, un resumen de nuestra aplicación que sistema de control de versión en este caso tengo un especial orientación a Git aunque no es el mas fácil de entender pero por ahora lo usaremos, ahora simplemente la licencia de código abierto que quieras usar, recomendado leer cuales son las características de cada una de ellas, algunas etiquetas y listo. 

2). Configurar el repositorio

 
Ya una vez que se tiene creado podemos ver diferentes opciones en este caso las interesantes son los Members que son los usuarios que están trabajando en el proyecto y tu rol en este caso el propietario.

Pueden agregar directamente ahí, en este post nos interesara la parte de Source el cual tendrá la dirección por la cual nos conectaremos al repositorio ya que lo controlaremos directamente desde netbeans. 

Tomaremos muy en cuenta la dirección de la opción 1 que es donde esta el git clone para empezarlo a trabajar, en el link de googlecode.com/password pueden revisar con que password nos conectaremos 

3) Clonar el repositorio en el netbeans 

Para  este abrimos nuestro IDE y nos vamos al menú de Team y escogemos la opción Git -> Clone (mucho cuidado si ya se tiene codigo ya que al clonar podemos perderlo ) Si ya se tiene el código inicializamos el browser 


No olvidemos escoger bien la carpeta si no todo lo que entre en la misma estará en el repositorio. 
No detectare branch alguno por lo que nos abrirá un proyecto nuevo, solamente seguimos al asistente para crear un nuevo proyecto. Vamos a notar que cuando terminemos nuestro proyecto tendrá un pequeño repositorio azul que nos indica que hay un cambio en lo que teníamos originalmente. 

 
4) Subir cambios

Si queremos subir cambios lo primero que tenemos que hacer es el commit local, lo que hacemos es dar clic derecho en el proyecto, ir a git   --> Add para dejar listo lo que queramos que entre al commit, luego posteriormente damos clic en git -> Commit se listaran todos los cambios que se hicieron a la estructura del directorio. Pueden poner ahí un comentario para saber que cambios se hicieron 


Por ultimo iremos a git->Remote->push, esto hará que los cambios que subimos al commit sean copiados al repositorio de Google code.

 

En este caso como sera nuestra primera subida puede ser actualizado en el master y mientras ese mismo usuario haga los cambios se puede estar trabajando sobre él cuando otro usuario interactué se recomienda crear un branch nuevo. 

Al finalizar el proceso tendremos nuestro código en el sitio de google 


5) Traer datos

Ya una vez que se hizo el push al repositorio publico, ya una vez que quieres traerte todo su proyecto podrán seguir el paso 3, si solo se esta trabajando con usuarios a la vez pueden hacer la opción de Git->Remote->pull para traer los datos o los cambios que se tienen y se actualicen el repositorio, solo hay que tener cuidado con el merge. 

Mas adelante publicaremos mas del uso de Git

 

jueves, 16 de octubre de 2014

[Java Mobile] Metodo para redimencionar una Imagen.



Uno de los problemas que nos presentamos al estar manejando diferentes dimensiones de pantalla es que las imagenes en un determinado tamaño no siempre son representadas correctamente por el tipo de pantalla, no es la excepción con Java Me mobile que es una programación muchas veces para dispositivos que no son de muchas capacidades por lo que les dejo un pequeño método para que en tiempo de ejecución podamos reedimensionar la imagen. Por lo que dejo este pequeño método para reedimensionar.


/**
     * Metodo que redimensiona una imagen 
     * @param image
     * Imagen original que hay que redimensionar
     * @param ancho
     * Nueva anchura que tendra la imagen
     * @param alto
     * Nueva altura que tendra la imagen 
     * @return 
     * Retorna 
     * la imagen ya redimensionada
     */
private Image redimensionar(Image image, int ancho, int alto) {
        int anchoOriginal = image.getWidth(); 
        int alturaOriginal = image.getHeight();
        int[] inicial;  
        int[] ifinal = null;
        inicial = new int[anchoOriginal];
        int i = 0;
        int dy, dx;
        ifinal = new int[ancho * alto];
        for (int y = 0; y < alto; y++) {
            dy = y * alturaOriginal / alto;

            image.getRGB(inicial, 0, anchoOriginal, 0, dy, anchoOriginal, 1);

            for (int x = 0; x < ancho; x++) {
                dx = x * anchoOriginal / ancho;

                ifinal[(ancho * y) + x] = inicial[dx];
            }
        }
        Image redimensionada = Image.createRGBImage(ifinal, ancho, alto, true);
        return redimensionada;
    }



martes, 14 de octubre de 2014

[C] Leyendo numeros, ejercicio con archivos.


En este caso traemos un problema que tiene que ver con la lectura de un archivo el cual maneja números reales y números enteros, separados por un pequeño guión, el cual el programa tiene un pequeño menú que les permitirá agregar, mostrar y eliminar.

Ponemos el código explicado lo mejor posible espero les sirva


#include
#include
#include

int main() {
    printf("Nombre del archivo:numeros.txt\n");
    //se declara un puntero para que puedas utilizar el archivo
    FILE *archivo;
    //fopen se utiliza para poder abrir archivos,
    //lleva la ruta como no tiene path significa que se crea en el misma
    //carpeta donde este el programa
    //si es con a+
    // si no existe el archivo lo crea y aparte permite leerlo
    // con w solo escribe y te crea uno nuevo cada que lo corres
    // con r solo es para leer
    //
    archivo = fopen("numeros.txt", "a+");
    int op;
    // hice un menu para que pudieras agregar los numeros y puedas consultar lo que
    // tiene el archivo
    while (op != 3) {
        printf("----Menu------\n");
        printf("1) Agregar\n");
        printf("2) Mostrar\n");
        printf("3) Salir\n");
        printf("Opcion: ");
        scanf("%d", &op);
        switch (op) {
            case 1:
                printf("Dame una numero: \n");
                // como son dos diferentes tipos de numeros te los agrego como cadena
                char entrada[30];
                // detiene el programa para que puedas ingresar el numero
                scanf("%s", entrada);
                // creo una cadena cadGUardar para que tenga el -y le adjunte lo que se leyo
                char cadGuardar[60];
                //copio a la primer cadena el -
                strcpy(cadGuardar, "-");
                //concateno a la cadena lo que se leyó
                strcat(cadGuardar, entrada);
                //fputs se utiliza para guardar la cadena al puntero del archivo
                fputs(cadGuardar, archivo);
                printf("Se guardo en el archivo\n"); //si imprime ese letrero quiere decir que se guardo
                break;
            case 2:
                //regreso el puntero al inicio del archivo
                rewind(archivo);
                //declaro un arreglo para ir almacenando los caracteres leidos
                char aux[30];
                int i = 0;
                //hago un ciclo hasta que llegue al final del archivo
                while (!feof(archivo)) {
                    //lee caracter por caracter del archivo
                    char car = fgetc(archivo);
                    //si no es guion lo va metiendo a aux
                    if (car != '-') {
                        aux[i] = car;
                        i++;
                        aux[i] = '\0';
                    } else // si encuentra el guion
                    {
                        if (i > 0) {
                            //convierte la cadena a double, puede funcionar con float
                            double num = atof(aux);
                            //mando llamar una funcion que esta abajo que permite saber si tiene
                            // el numero decimales, pude haber buscado el . pero lo hago con una
                            // resta
                            if (isDecimal(num)) {
                                //convierte el num en Entero
                                int numEntero = num;
                                //imprime como entero
                                printf("Numero Entero: %d\n", numEntero);
                            } else // si no quiere decir que fue flotante
                                printf("Numero Flotante: %f\n", num);
                            i = 0;
                        }
                    }
                }
                // en el ultimo guion hacemos un proceso mas
                if (i > 0) {
                    //convierte la cadena a double, puede funcionar con float
                    double num = atof(aux);
                    //mando llamar una funcion que esta abajo que permite saber si tiene
                    // el numero decimales, pude haber buscado el . pero lo hago con una
                    // resta
                    if (isDecimal(num)) {
                        //convierte el num en Entero
                        int numEntero = num;
                        printf("Numero Entero: %d\n", numEntero);
                    } else
                        printf("Numero Flotante: %f\n", num);
                    i = 0;
                }
                break;
            case 3:
                break;
            default:
                printf("Opcion incorrecta \n");
        }
    }
    printf("Salida !!");
    fclose(archivo); // cierra el archivo para evitar errores
    return 0;
}
//regresa un 0 si es real y un 1 si es entero

int isDecimal(double num) {
    // sacamos la parte entera del numero real
    int x = num;
    // creo un double con el numero entero para cuando hagas la resta sea double
    double x2 = x;
    // si alrestar el flotante con el entero sobran decimales returna un 0
    if (num - x2 > 0)
        return 0;
    else // de lo contrario retorna un 1
        return 1;
}



Link de Github