sábado, 21 de mayo de 2016

[SublimeText] Ejecutar programas de Java aplicado a un entorno XFCE



Sublime Text es sin duda uno de los editores que mas gustan por su sencillez, simpleza y la cantidad de extensiones que podemos encontrar, ademas de la portabilidad y usa serie de opciones. En este caso la parte de la codificación es reconocido y dominado, pero también detrás de sublime hay un sistema de construcción, compilación y ejecución que se adapta a los programas mas sencillos, sin embargo muchos de ellos son demasiados básicos, como ejecutar el compilador y mostrar los elementos. En el caso de java tenemos disponible un sistema de construcción ya definido que lo podemos encontrar en:


Sin embargo solo compila y nos genera el archivo class de Java por lo que vamos a crear nuestro propio sistema de compilación y ejecución para java, cabe destacar que este procedimiento es con un entorno grafico de XFCE con Debian 8. Se preguntaran que tiene que ver esto, pero es importante ya que sublime tiene su propia consola pero no interactúa con el programa es decir, si mi programa tiene pausas de pantalla como en el caso de ingresar un valor pues nos vamos a encontrar que los valores nunca llegan a la ejecución de Java por lo que terminara mi programa en cuanto lo ejecutemos, para evitar esto lo ejecutaremos directamente en la terminal (ahí es donde entra XFCE), pero el procedimiento aplica para cualquiera solo sabiendo cual es la terminal que se usa o en el caso de Windows. 

Bueno empezamos para crear un archivo de configuración para esto vamos a la opción Tools- Build System - New Build System

Nos aparecerá un archivo en tipo JSON que modificaremos con el siguiente código:



{
    "cmd": ["javac", "-Xlint", "$file"],
    "file_regex": "^(...*?):([0-9]*):?([0-9]*)",
    "working_dir": "${file_path}",
    "selector": "source.java",
    "variants":[
      {
        "name":"run-xterm",
        "shell_cmd":"xterm -hold -e 'java $file_base_name'",
        "shell":"true"
      },
      {
        "name":"run-xfce",
        "shell_cmd":"xfce4-terminal -x bash -c 'java $file_base_name ; read -p TERMINADO'",
        "shell":"true"
      }      

    ]
}



Explicando un poco, esta dividido el archivo en 3 secciones, la primer y principal vienen los siguientes campos:

cmd: este campo es obligatorio o se ponen con [ ] por si es una colección de valores, ahí se especifica la linea de comando que utilizaremos se puede decir por default en este caso es la compilación del programa. El paremtro $file sera el nombre del archivo que ejecutemos para el guardado (esto sublime se encarga automáticamente)

file_regex y working_dir: Estos parámetros son opcionales, pero los agregamos para evitar diferentes tipos de errores si el codigo es cambiado a otro contexto de ayuda. El file_regex es para buscar que el nombre del archivo venga con un formato correcto y working _dir para hacer las compilaciones y trabajos directamente en la carpeta donde el archivo esta almacenado.

selector: Aunque en la documentación oficial marca que es optativo se utiliza para que sublime reconozca el formato y si tiene un build configurado para esa compilación lo active.

Variants:  Son los cambios que quieras ejecutar en algún momento dado, ya mas personalizados, en este caso ahí tengo los elementos de la configuración de ejecución.

name: Los elementos name nos ayudaran a reconocer que quiero que se ejecute al momento de activar ejecución en sublime.

Shell_cmd y shell: Lo utilizamos para que los comandos se ejecuten directamente en la linea de comandos del sistema operativo como tal, en este caso tenemos dos opciones el xterm (consola común que varias distribuciones de linux tienen y la de xfce4-Terminal que viene en el entorno grafico de xfce)

Guardamos el archivo que este dentro de la user de donde esta instalado sublime, en este caso cuando le damos guardar directamente el programa nos lleva a ese path, mucho cuidado que quede con terminación sublime-build. Este procedimiento lo hacemos una sola vez, una ves terminado cerramos y abrimos sublime text.



Ya puedes codificar tus programas en java, ahora lo que vamos a ser es simplemente cuando quieras correr tus aplicaciones verificar que en Build-System este activada tu configuración



Y ahora puedes presionar shift + Ctrl + B y escoger la opción que quieras recordando que la primera es compilación, la segunda es ejecución en Xterm y la tercera ejecución en xfce-terminal


Si quieres repetir la ultima opción elegida puedes poner Ctrl + B solamente y se repetirá, también si es la primera vez que estas usando el comando en tu programa Ctrl+ B ejecutara la primer opción que tienes.

Si alguien hace un archivo para otra configuración ya sea lenguaje o plataforma compártelo para mejorar las opciones.


Editor: SublimeText

viernes, 20 de mayo de 2016

[ANDRIOID] Guardar un valor por medio de SharedPreferences

Andrid tiene varias maneras de almacenar o utilizar información para sus aplicaciones, en el caso del almacenamiento dentro del mismo dispositivo tiene tres opciones interesantes que sea podrían adaptar a los requerimientos de los proyectos que se quieran, sin ambargo, debemos tener presente que sigue siendo un telefono o un movil con capacidades limitadas por lo que no son exactamente buenos para que funcionen como repositorios de información, ademas que recurdemos que android tiene una visión de siempre conectado por lo que tampoco es algo que le tomaran tanta importancia a futuro. 

A mi, en lo particular puedo considerar tres formas basicas para almacenar información de manera local que son las preferencias compartidas (archivos de XML), archivos y un el funcional SQLite que aunque muy limitado podemos usar funciones de base de datos. 

En este caso el post es sobre las preferencias compartidas que son contraladas mediante una clase llamada "SharedPreferences".  Estas preferencias estan construidas para trabajar con datos muy basicos, por lo que consiste en formar un mapa de valores con relación "nombre - valor". Creo que es una de las clases mas sencillas de usar, esto ayuda a guardar configuraciones del usuario o recordar algunos valores una vez que la aplicación fue reabierta o cargada, primero para poder usar las preferencias tendremos que crear la instancia de las clases.

        //Se inicializa el objeto de preferencias
        // Existen mas metodos que el MODE_PRIVATE pero estan
        //depreciados en el caso de MODE_WORLD_READABLE y
        // MODE_WORLD_WRITEABLE por tener problemas de seguridad
        SharedPreferences sp = getSharedPreferences("mispreferencias",MODE_PRIVATE);
        

Como se menciona SharedPreferences es una clase muy sencilla solo almacena valores de tipos básicos por lo que el guardar elementos consiste en crear un Objeto Editor de la clase y simplemente agregar (put) los valores con el formato "nombre - valor", por ejemplo si queremos almacenar un dato suponiendo una aplicación como la siguiente:



Por ejemplo queremos que cuando de click en el botón guardar quede almacenado el nombre que este en el EditText ponemos el siguiente codigo:


        // Se obtiene el valor
        String nuevoNombre = texto.getText().toString();
        // Se crea el objeto para controlar las preferencias
        SharedPreferences sp = getSharedPreferences("mispreferencias",MODE_PRIVATE);
        //Se genera un Editor para modificar
        SharedPreferences.Editor editor = sp.edit();
        //asignamos el valor al map
        editor.putString("nombre",nuevoNombre);
        // guardamos cambios
        editor.commit();


Para obtener los datos solo tenemos que traer los valores de la siguiente manera, cabe mencionar que si revisa el código y ve que el get lleva dos parámetros, son el primero es el nombre del valor que andamos buscando, en el caso del segundo valor, es solamente un valor por default que se utiliza en caso de que el nombre no este funcionando, esto según la aplicación lo hacemos al crear la actividad  lo asignamos al EditText


        //Se inicializa el objeto de preferencias
        // Existen mas metodos que el MODE_PRIVATE pero estan
        //depreciados en el caso de MODE_WORLD_READABLE y
        // MODE_WORLD_WRITEABLE por tener problemas de seguridad
        SharedPreferences sp = getSharedPreferences("mispreferencias",MODE_PRIVATE);
        String nombre = sp.getString("nombre","NO HAY GUARDADO");
        //mostramos el valor guardado o si es la primera vez
        // y no hay guardado simplemente pone el valor por default
        texto.setText(nombre);

SharedPreferences tiene también una actividad que puede ser usada para tener un panel de configuraciones que posteriormente publicare. 

Les dejo un ejemplo de una aplicación la cual utiliza el concepto de sharedPreferences para almacenar un valor. Lo dejo en Github.


jueves, 19 de mayo de 2016

[JAVA] Ejecutar aplicacionees JAVA en Android Studio



Android Studio no cabe duda que vino a revolucionar la forma de programar para Android, aunque en mi punto de vista consume muchos recursos, por lo que muchas veces no es el editor que los programadores de Java (No de android) pudieran escoger. En esta caso cuando aprendes Android se requieren bases de Java por lo que muchas veces es necesario repasar algunos conceptos por lo que android studio permite programar directamente con Java, y solventar por ejemplo en un curso tener que tener instalado algún otro editor, para revisar algunos conceptos de Java. 

Para eso empezaremos creando un Nuevo proyecto con los datos referentes a cuando creas tus proyectos para android.


Para esto escogemos en este caso para que teléfono o tableta quieres trabajar, en este caso no hay tanta importancia. 


Una vez que escogimos la versión que sera compatible que no tiene mucha importancia, nos preguntara como queremos que se cree nuestra actividad por lo que en este caso le diremos que no queremos ninguna actividad (Add No Activity) y damos finalizar




Una vez que estamos ahí agregaremos un modulo nuevo en nuestro proyecto para esto nos vamos al menú File -> New -> New Module ....


Nos pedirá el tipo de modulo en este caso seleccionaremos una librería de Java



Luego nos pedirá el nombre que le daremos al modulo en este caso yo le llamare javaruntime y la clase la llamare Ejemplo.



Una vez creado el modulo aparecerá en el explorador del proyecto y encontraremos la clase, en este caso agregamos un poco de código para imprimir el hola mundo en consola y en una ventana emergente, de la siguiente manera: 



Una vez abierto el archivo ponemos el código


Ya tenemos código de Java listo para ser ejecutado, sin embargo si vamos a la parte de la ejecución me dirá que no puede ejecutar ya que no tiene un configuración definida para los programas de Java por lo que vamos a crearlo por lo que tenemos que configurar, nos vamos al apartado donde ejecutamos (app) veremos que aparece una tachita, vamos a darle clic en el menú emergente para que podamos editar la configuración. 


Ya que estamos ahí veremos una pantalla donde si nos vamos a la esquina superior izquierda veremos algo como lo siguiente, damos clic en el símbolo de "+" para agregar una nueva configuración



Ya que le dimos clic en el "+" nos dirá el tipo de configuración. en este caso escogeremos la opción de "Application".


Estando en la pantalla de aplicación agregaremos lo siguiente: 
  • Nombre: El nombre que usted quiera 
  • Nombre de la clase principal: Es el nombre de la clase que tiene el main en mi caso com.example.Ejemplo
  • Modulo: javaruntime porque asi se llama el modulo que yo use. 
Aplicamos los cambios y aceptamos 


Veremos que cuando aceptamos ya tendremos en la opción de ejecutar la configuración ya establecida por lo que me permitirá ejecutar directamente la aplicación presionando el símbolo play 



Ejecutamos y ya tendremos un modulo que permite utilizar Java para los requerimientos que se tengan. 

Dejo el proyecto en GitHub por si alguien lo necesita: 






miércoles, 18 de mayo de 2016

[Android] Atajos para el uso de emulador en android

Les dejo algunos atajos del teclado para el control del emulador

Inicio: Home del teléfono
F2: Menú del teléfono
Esc: opción de volver en el teléfono
F7: encendió / apagado
Ctrl+f11 o tecla 7: cambia la orientación del teléfono de horizontal a vertical
Ctrl+ F5: volumen +
Ctrl + F6: volumen -

Espero les sirva

lunes, 16 de mayo de 2016

[LINUX] Configurar servicios de red en Debian: HTTP, DNS, DHCP, FTP, SSH


Debian desde mi punto de vista y el de algunos muchos es el mejor o uno de las mejores distribuciones de linux que se puede decir "padre"(No depende de otra) , eso hace que a mi punto de vista es muy ligera, flexible, tiene una gran comunidad y documentación como pocas distribuciones por lo que es muy robusta. 

En este caso hice un pequeño manual de como configurar un pequeño servidor con las funciones mas básicas para una red Local y por cuestiones académicas fue probado en una maquina virtual, cabe mencionar que los servicios fueron configurados a lo mínimo por lo que no abarca aspectos de seguridad. Espero les sirva



domingo, 15 de mayo de 2016

[Android] Hacer una vista FullScreen basada en AppCompat



Vamos a ver como podemos desaparecer las Toolbar y la barra de indicadores de Android para tener una pantalla totalmente disponible, muchas veces necesario cuando desarrollas un juego o alguna aplicación que requiera toda la pantalla.

En el toda la clasificación de versiones de Android y los diferentes dispositivos que existen, es muy común que las aplicaciones ocupen un punto de equilibrio, si no estaríamos desarrollando para cada diferente versión. Android maneja una librería de compatibilidad para las versiones anteriores para que puedan utilizar nueva funcionalidad y la programación sea mas noble crea un conjunto de clases que en algunos casos permiten la funcionalidad como si estuviéramos en versiones mas avanzadas pero en este caso no es permitido el generar una pantalla fullscreen directamente en el Theme por lo que tendremos que codificar un poco mas.

En este caso empezaremos a crear el estilo para que la ventana se adapte, en este caso vamos a la carpeta /res/values y abrimos el archivo styles.xml, creamos el estilo agregando el siguiente código





 
.....









Una vez que se tiene solo abriremos el AndroidManifest.xml y buscamos la actividad que queremos aplicarle el nuevo estilo y con esto tendremos que cuando se abra la actividad la tendremos en pantalla completa




.....

    

        

         ......

        
        
        
        
    




Espero les haya servido.


sábado, 14 de mayo de 2016

[Android] Instalación de Android Studio (Windows) y algunos atajos de teclado


Les dejo un pequeño tutorial de como instalar Android Studio.





También algunos atajos que podrían ayudarte:


  • Alt + Intro: Activa la sugerencia rápida, por ejemplo permite importar a la clase o la implementación de algún código automático. 
  • Alt + Insert: Inserta un método
  • Ctrl + Alt + L: Da formato al código
  • Ctrl + Y: Borra linea 
  • Ctrl + Q: Muestra la documentación el código
  • F4: Salta la declaración
  • Ctrl + P : Muestra los parámetros del método 
  • Shift + F6: Cambia el nombre de un identificador