martes, 29 de enero de 2013

Programación Android - Como Crear Un Splash Screen



En el presente artículo les dejo fuente de ejemplo de un Activity para SplashScreen el cual se muestra durante 1500 milisegundos y pasado ese tiempo llama a una supuesta Activity NextActivity (o bien tu siguiente Activity). Este tiempo puede ser interrumpido tocando en la pantalla.

A continuación el código fuente de la clase SplashActivity:


package com.davidg.samples;

import android.app.*;
import android.content.*;
import android.os.*;
import android.view.*;

public class SplashActivity extends Activity
 {
 protected boolean _active = true;
 protected int _splashTime = 1500; // Tiempo máximo de duración de splash (espera normal) en milisegundos.
    protected int _controlTime = 100;  // Tiempo de control de toque de pantalla en milisegundos.
 
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.splash_activity);
        
        Thread splashTread = new Thread() {
            @Override
            public void run() {
                try {
                    int waited = 0;
                    while(_active && (waited < _splashTime)) {
                        sleep( _controlTime );
                        if(_active) {
                            waited += _controlTime;
                        }
                    }
                } catch(InterruptedException e) {
                    // Capturamos la excepción de interrupción y continuamos por finally.
                } finally {
                            
                    startActivity( new Intent(SplashActivity.this, NextActivity.class) );

                    finish();
                }
            }
        };
        splashTread.start();
    }
    
     /* Detectamos si el usuario toca la pantalla e Interrumpimos la espera normal */
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        if (event.getAction() == MotionEvent.ACTION_DOWN) {
            _active = false;
        }
        return true;
    }
}


Escrito por:

jueves, 24 de enero de 2013

Windows - Como borrar path muy largos (path too long error)



Te ha pasado que encuentras en tu disco una carpeta que no puedes borrar debido a que el nombre de los directorios anidado es demasiado largo?

Si es así, aquí te dejo una herramienta que te permite eliminarlas de una manera muy simple. Esta herramienta se debe usar cuando el problema es y no se trata de permisos, eso lo tendrás que solucionar manualmente antes de ejecutar esta herramienta.
La misma se llama PathTooLong, perteneciente a OSMsolutions. La herramienta es muy pequeña aunque por ser una aplicación java (JAR) requiere que poseas Java (JRE) instalado para ejecutar.

Como eliminar la carpeta 


Solo debes ejecutarla, donde la aplicación mostrará la siguiente interfaz:



Presionando el boton con los tres puntos (...) la aplicación presentara una ventana de selección de carpetas:


Selecciona la carpeta que deseas eliminar y presiona "Open".


Luego presiona "Execute Path Removal". La aplicación se encargará de eliminarlas recursivamente, indicando mediante un mensaje final el resultado de la operación.

A continuación les dejo el link de descarga de la aplicación.



Otros links de utilidad:



El link de la pagina del proyecto es: www.osmstudios.com/Display.asp?Page=pathtoolong
El link de la pagina oficial del desarrollador: www.osmstudios.com


Escrito por:

lunes, 14 de enero de 2013

Visual Studio - NuGet Package Manager



Que es NuGet?


NuGet Package Manager es una extensión de Visual Studio que permite automatizar el proceso de descarga, instalación, actualización, configuración y eliminación de paquetes de librerías de terceras partes.

En la actualidad permite acceder a librerías comunes desde un conjunto de 9724 paquetes.

Entre las librerías que podemos encontrar se encuentran:

  • jQuery
  • Entity Framework
  • JSON.net
  • NUnit
  • log4net
  • DotNetZip
  • etc.


Como instalarlo:

Se puede hacer tanto desde la pagina principal de nuget, como del siguiente link:
http://visualstudiogallery.msdn.microsoft.com/27077b70-9dad-4c64-adcf-c7cf6bc9970c2


Links:




Escrito por:

martes, 8 de enero de 2013

StickNFind - No Vuelvas A Perder Mas Nada



Hoy en día es muy común tener varios gadgets y objetos importantes: tablets, notebooks, controles remotos, llaves del auto, de la casa, etc.

Pero que pasa cuando mas los necesitamos: lo mas probable es que no los encontremos y la cólera incontrolable nos domine y pensemos: Es que acaso nadie ha pensado en esto?

Efectivamente si, esta preocupación ha sido la de un grupo de entusiastas movidos por un solo objetivo: que no vuelvas a perder mas nada.





Quienes son:
Stick-N-Find Technologies se presentan como una empresa que hace 20 años se dedica al desarrollo de productos electrónicos especializados en radiofrecuencia y en muy pequeños diseños bluetooth.


Que hicieron:
Diseñaron un pequeño tag adhesivo del tamaño de una moneda el cual puede adherirse a una gran variedad de superficies, y no solo puede permitirnos encontrarlo a través de nuestro teléfono celular favorito, sino también se le puede activar una señal sonora o visual.





Como funciona:
El diminuto dispositivo posee un circuito integrado bluetooth el cual puede ser emparejado a nuestro celular, y este le avisa cuando está el rango de alcance.




Otra función interesante es la de activar una funcionalidad del teléfono para cuando se llega a un lugar en donde esté el dispositivo, y para cuando se sale sel alcance del mismo.

Aquí tienen el vídeo de presentación del producto:



Por ultimo  les dejo el link del sito crowdfunding por si desean saber mas y apoyarlo: http://www.indiegogo.com/sticknfind

Apurate! Quedan casi 6 días para apoyarlo y ganarte algunos stickers. Saludos!

Escrito por:

viernes, 4 de enero de 2013

Jenkins CI - Qué es y porqué usarlo




Comenzamos el año con un post sobre una de las herramientas imprescindibles para cuando trabajamos en desarrollos de mediana a gran escala: Jenkins.

Jenkins CI es un sistema de Integración continua java web desarrollado por Kohsuke Kawaguchi, desarrollador de la ex Sun Microsystems y ahora en Oracle. Es open source.

Jenkins proporciona integración continua para el desarrollo de software, es decir, permite configurar y agendar la ejecución de tareas conteniendo toda y/o cada una de las partes que conforman el ciclo de vida de un proyecto. Para dar una idea de esto, basta pensar en los famosos night- builds, los cuales son compilaciones, validaciones y liberación de versión beta que realizan algunos sistemas durante las noches de forma automática sobre lo que han ido trabajando los desarrolladores durante el día.

Es una pieza importante en lugares donde a veces una corrección de 5 minutos demora en ver la luz una semana debido a que tiene que pasar por toda una serie de procesos manuales de control, confección de instaladores y en su posterior distribución para usuarios finales.



Jenkins nace como fork del sistema predecesor Hudson CI del mismo autor, como alternativa open source desde que Sun  fue adquirida por Oracle y cambiada su licencia.

Puede ser instalado tanto sobre windows, como linux y otras distribuciones unix compatibles. Por ser una aplicación java web es recomendable su instalación sobre un servlets container, por lo que puede ser montado sobre un Apache Tomcat o Glassfish. Así mismo puede ejecutarse de manera autónoma ya que posee un servidor web integrado y hasta puede instalarse como servicio según como se lo ejecute.

Posee una larga lista de plugins los cuales le permiten definir tareas que puedan integrarse con herramientas de control de versiones (CVS, Subversion, Git u otros) y ejecutar proyectos basados en Apache Maven (recomendado debido a que maneja naturalmente las partes del ciclo de vida de un protecto mediante comandos simples), Apache Ant, Microsoft MSBuild, shell y batch scripts de Microsoft Windows. Además permite ejecutar tareas adicionales previo y posterior a la compilación  como preparar el entorno, preparar un emulador, realizar un despliegue o compactar y subir binarios a un FTP.




Para ver la  lista de plugins actuales ir al siguiente site: https://wiki.jenkins-ci.org/display/JENKINS/Plugins

Jenkins también posee un historial de cambios realizados por build o versión, saber quien lo realizo y cuales archivos fueron  manipulados, y sus comentarios al respecto.



Porqué usarlo
  1. Simplifica significativamente (a un par de clicks y dentro de un marco web lo que lo hace fácilmente accesible desde cualquier parte) los procesos involucrados en el ciclo de vida de un proyecto, ya sean  simples o repetitivos, largos y complejos como ser de generación de binarios integrando el trabajo de varios desarrolladores, ejecución de testing, generación de reportes de estado, armados de instaladores, publicación en pagina web, notificación a clientes de versiones beta, etc. sin la necesidad y el tiempo de una persona.
  2. Da un marco de simplicidad sobre la integración continua gracias a las diferentes posibilidades de notificaciones de éxitos y errores entre procesos, por lo que con la cultura adecuada sobre los mismos se puede asegurar una altísima calidad de software desde el primer día, evitando errores, demoras y a un mínimo coste.
  3. Debido a los múltiples sistemas de notificaciones por cual optar (ya sea por mail, chat, gtalk, twitter, etc ), es sencillo estar siempre informado y poder tomar decisiones rápidamente.


En próximos post pondré un ejemplo de como utilizar Jenkins para automatizar la construcción  prueba y liberación de un proyecto.


Escrito por: